Hadoop入门篇01---基础概念和部署教程

这篇具有很好参考价值的文章主要介绍了Hadoop入门篇01---基础概念和部署教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本文参考: Hadoop3.x教程


Hadoop是什么

Hadoop是Apache旗下的一个用java语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台。允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。

狭义上说,Hadoop指Apache这款开源框架,它的核心组件有:

  • HDFS(分布式文件系统):解决海量数据存储
  • YARN(作业调度和集群资源管理的框架):解决资源任务调度
  • MAPREDUCE(分布式运算编程框架):解决海量数据计算

广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。

hadoop基础入门,# hadoop,hadoop,大数据,分布式
当下的Hadoop已经成长为一个庞大的体系,随着生态系统的成长,新出现的项目越来越多,其中不乏一些非Apache主管的项目,这些项目对HADOOP是很好的补充或者更高层的抽象。比如:

框架 用途
HDFS 分布式文件系统
MapReduce 分布式运算程序开发框架
ZooKeeper 分布式协调服务基础组件
HIVE 基于HADOOP的分布式数据仓库,提供基于SQL的查询数据操作
FLUME 日志数据采集框架
oozie 工作流调度框架
Sqoop 数据导入导出工具(比如用于mysql和HDFS之间)
Impala 基于hive的实时sql查询分析
Mahout 基于mapreduce/spark/flink等分布式运算框架的机器学习算法库

Hadoop发展史

Hadoop是Apache Lucene创始人 Doug Cutting 创建的。最早起源于Nutch,它是Lucene的子项目。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题:如何解决数十亿网页的存储和索引问题。

2003年Google发表了一篇论文为该问题提供了可行的解决方案。论文中描述的是谷歌的产品架构,该架构称为:谷歌分布式文件系统(GFS),可以解决他们在网页爬取和索引过程中产生的超大文件的存储需求。

2004年 Google发表论文向全世界介绍了谷歌版的MapReduce系统。

同时期,以谷歌的论文为基础,Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。

2006年Google发表了论文是关于BigTable的,这促使了后来的Hbase的发展。

因此,Hadoop及其生态圈的发展离不开Google的贡献。


Hadoop特点有哪些

  • 扩容能力(Scalable):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。
  • 成本低(Economical):Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。
  • 高效率(Efficient):通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。
  • 可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。

Hadoop版本

Hadoop历史版本:

• 1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等,该版本已被淘汰

• 2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性,是现在使用的主流版本。

• 3.x版本系列:对HDFS、MapReduce、YARN都有较大升级,还新增了Ozone key-value存储。

Hadoop发行版公司:

  • Hadoop发行版本分为开源社区版商业版。社区版是指由Apache软件基金会维护的版本,是官方维护的版本体系。

  • 商业版Hadoop是指由第三方商业公司在社区版Hadoop基础上进行了一些修改、整合以及各个服务组件兼容性测试而发行的版本,比较著名的有cloudera的CDH、mapR、hortonWorks等。

社区版:

免费开源版本Apache: http://hadoop.apache.org/

  • 优点:拥有全世界的开源贡献者,代码更新迭代版本比较快,

  • 缺点:版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到

Apache所有软件的下载地址(包括各种历史版本):http://archive.apache.org/dist/

免费开源版本HortonWorks:

  • hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址(http://ambari.apache.org/),2018年,大数据领域的两大巨头公司Cloudera和Hortonworks宣布平等合并,Cloudera以股票方式收购Hortonworks,Cloudera股东最终获得合并公司60%的股份

收费版本:

  • 软件收费版本Cloudera: https://www.cloudera.com/

  • cloudera主要是美国一家大数据公司在apache开源hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题


Hadoop架构

Hadoop 1.0 :

  • HDFS(分布式文件存储)
  • MapReduce(资源管理和分布式数据处理)

Hadoop 2.0 :

  • HDFS(分布式文件存储)
  • MapReduce(分布式数据处理)
  • YARN(集群资源管理、任务调度)
    hadoop基础入门,# hadoop,hadoop,大数据,分布式

由于Hadoop 2.0是基于JDK 1.7开发的,而JDK 1.7在2015年4月已停止更新,这直接迫使Hadoop社区基于JDK 1.8重新发布一个新的Hadoop版本,即hadoop 3.0。

Hadoop 3.0中引入了一些重要的功能和优化,包括HDFS 可擦除编码、多Namenode支持、MR Native Task优化、YARN基于cgroup的内存和磁盘IO隔离、YARN container resizing等。

Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+磁盘,共同处理数据。

改变最大的是hdfs,hdfs 通过最近block块计算,根据最近计算原则,本地block块,加入到内存,先计算,通过IO,共享内存计算区域,最后快速形成计算结果,比Spark快10倍。
hadoop基础入门,# hadoop,hadoop,大数据,分布式


Hadoop 3.0新特性

初学阶段,了解即可

Hadoop 3.0在功能和性能方面,对hadoop内核进行了多项重大改进,主要包括:

通用性:

  1. 精简Hadoop内核,包括剔除过期的API和实现,将默认组件实现替换成最高效的实现。
  2. Classpath isolation:以防止不同版本jar包冲突
  3. Shell脚本重构: Hadoop 3.0对Hadoop的管理脚本进行了重构,修复了大量bug,增加了新特性。

HDFS:

Hadoop3.x中Hdfs在可靠性和支持能力上作出很大改观:

1.HDFS支持数据的擦除编码,这使得HDFS在不降低可靠性的前提下,节省一半存储空间。

2.多NameNode支持,即支持一个集群中,一个active、多个standby namenode部署方式。

注:多ResourceManager特性在hadoop 2.0中已经支持。

HDFS纠删码:

  • 在Hadoop3.X中,HDFS实现了Erasure Coding这个新功能。Erasure coding纠删码技术简称EC,是一种数据保护技术.最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术。
  • 它通过在原始数据中加入新的校验数据,使得各个部分的数据产生关联性。在一定范围的数据出错情况下,通过纠删码技术都可以进行恢复。
  • hadoop-3.0之前,HDFS存储方式为每一份数据存储3份,这也使得存储利用率仅为1/3,hadoop-3.0引入纠删码技术(EC技术),实现1份数据+0.5份冗余校验数据存储方式。
  • 与副本相比纠删码是一种更节省空间的数据持久化存储方法。标准编码(比如Reed-Solomon(10,4))会有1.4 倍的空间开销;然而HDFS副本则会有3倍的空间开销。

支持多个NameNodes:

  • 最初的HDFS NameNode high-availability实现仅仅提供了一个active NameNode和一个Standby NameNode;并且通过将编辑日志复制到三个JournalNodes上,这种架构能够容忍系统中的任何一个节点的失败。
  • 然而,一些部署需要更高的容错度。我们可以通过这个新特性来实现,其允许用户运行多个Standby NameNode。比如通过配置三个NameNode和五个JournalNodes,这个系统可以容忍2个节点的故障,而不是仅仅一个节点。

MapReduce:

Hadoop3.X中的MapReduce较之前的版本作出以下更改:

  • Tasknative优化:为MapReduce增加了C/C++的map output collector实现(包括Spill,Sort和IFile等),通过作业级别参数调整就可切换到该实现上。对于shuffle密集型应用,其性能可提高约30%。

  • MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,一旦设置不合理,则会使得内存资源浪费严重,在Hadoop3.0中避免了这种情况。

  • Hadoop3.x中的MapReduce添加了Map输出collector的本地实现,对于shuffle密集型的作业来说,这将会有30%以上的性能提升。

默认端口更改:

  • 在hadoop3.x之前,多个Hadoop服务的默认端口都属于Linux的临时端口范围(32768-61000)。这就意味着用户的服务在启动的时候可能因为和其他应用程序产生端口冲突而无法启动。
  • 现在这些可能会产生冲突的端口已经不再属于临时端口的范围,这些端口的改变会影响NameNode, Secondary NameNode, DataNode以及KMS。与此同时,官方文档也进行了相应的改变,具体可以参见 HDFS-9427以及HADOOP-12811。
Namenode ports: 50470> 9871, 50070> 9870, 8020> 9820

Secondary NN ports: 50091> 9869,50090> 9868

Datanode ports: 50020> 9867, 50010> 9866, 50475> 9865, 50075> 9864

Kms server ports: 16000> 9600 (原先的16000HMaster端口冲突)

YARN 资源类型:

  • YARN 资源模型(YARN resource model)已被推广为支持用户自定义的可数资源类型(support user-defined countable resource types),不仅仅支持 CPU 和内存。

  • 比如集群管理员可以定义诸如 GPUs、软件许可证(software licenses)或本地附加存储器(locally-attached storage)之类的资源。YARN 任务可以根据这些资源的可用性进行调度。


Hadoop集群搭建

集群简介

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。

HDFS集群负责海量数据的存储,集群中的角色主要有:

  • NameNode
  • DataNode
  • SecondaryNameNode

YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:

  • ResourceManager
  • NodeManager

那mapreduce是什么呢?

  • 它其实是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理。

集群部署方式

Hadoop部署方式分三种:

standalone mode(独立模式)

独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。

Pseudo-Distributed mode(伪分布式模式)

伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。

Cluster mode(集群模式)

集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。


hadoop重新编译

为什么要编译hadoop?

  • 由于apache给出的hadoop的安装包没有提供带C程序访问的接口,所以我们在使用本地库(本地库可以用来做压缩,以及支持C程序等等)的时候就会出问题,需要对Hadoop源码包进行重新编译。

Hadoop3编译

  • 基础环境:Centos 7.7

编译环境软件安装目录

mkdir -p /export/server
  • 安装编译相关的依赖
1、yum install gcc gcc-c++

#下面这个命令不需要执行 手动安装cmake
2、yum install make cmake  #(这里cmake版本推荐为3.6版本以上,版本低源码无法编译!可手动安装)

3、yum install autoconf automake libtool curl

4、yum install lzo-devel zlib-devel openssl openssl-devel ncurses-devel

5、yum install snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop libXtst
  • 手动安装cmake
#yum卸载已安装cmake 版本低
yum erase cmake

#解压
tar zxvf cmake-3.13.5.tar.gz

#编译安装
cd /export/server/cmake-3.13.5

./configure

make && make install

#验证
[root@node4 ~]# cmake -version      
cmake version 3.13.5

#如果没有正确显示版本 请断开SSH连接 重写登录
  • 手动安装snappy
#卸载已经安装的
cd /usr/local/lib

rm -rf libsnappy*

#上传解压
tar zxvf snappy-1.1.3.tar.gz 

#编译安装
cd /export/server/snappy-1.1.3
./configure
make && make install

#验证是否安装
[root@node4 snappy-1.1.3]# ls -lh /usr/local/lib |grep snappy
-rw-r--r-- 1 root root 511K Nov  4 17:13 libsnappy.a
-rwxr-xr-x 1 root root  955 Nov  4 17:13 libsnappy.la
lrwxrwxrwx 1 root root   18 Nov  4 17:13 libsnappy.so -> libsnappy.so.1.3.0
lrwxrwxrwx 1 root root   18 Nov  4 17:13 libsnappy.so.1 -> libsnappy.so.1.3.0
-rwxr-xr-x 1 root root 253K Nov  4 17:13 libsnappy.so.1.3.0
  • 安装配置JDK 1.8
#解压安装包
tar zxvf jdk-8u65-linux-x64.tar.gz

#配置环境变量
vim /etc/profile

export JAVA_HOME=/export/server/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile

#验证是否安装成功
java -version

java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
You have new mail in /var/spool/mail/root
  • 安装配置maven
#解压安装包
tar zxvf apache-maven-3.5.4-bin.tar.gz

#配置环境变量
vim /etc/profile

export MAVEN_HOME=/export/server/apache-maven-3.5.4
export MAVEN_OPTS="-Xms4096m -Xmx4096m"
export PATH=:$MAVEN_HOME/bin:$PATH

source /etc/profile

#验证是否安装成功
[root@node4 ~]# mvn -v
Apache Maven 3.5.4

#添加maven 阿里云仓库地址 加快国内编译速度
vim /export/server/apache-maven-3.5.4/conf/settings.xml

<mirrors>
     <mirror>
           <id>alimaven</id>
           <name>aliyun maven</name>
           <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
           <mirrorOf>central</mirrorOf>
      </mirror>
</mirrors>
  • 安装ProtocolBuffer 2.5.0
#解压
tar zxvf protobuf-2.5.0.tar.gz

#编译安装
cd /export/server/protobuf-2.5.0
./configure
make && make install

#验证是否安装成功
[root@node4 protobuf-2.5.0]# protoc --version
libprotoc 2.5.0
  • 编译hadoop
    hadoop基础入门,# hadoop,hadoop,大数据,分布式
#上传解压源码包
tar zxvf hadoop-3.1.4-src.tar.gz

#编译
cd /export/server/hadoop-3.1.4-src

mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib

#参数说明:

Pdist,native :把重新编译生成的hadoop动态库;
DskipTests :跳过测试
Dtar :最后把文件以tar打包
Dbundle.snappy :添加snappy压缩支持【默认官网下载的是不支持的】
Dsnappy.lib=/usr/local/lib :指snappy在编译机器上安装后的库路径
  • 编译之后的安装包路径
/export/server/hadoop-3.1.4-src/hadoop-dist/target

Hadoop集群安装

集群模式主要用于生产环境部署,需要多台主机,并且这些主机之间可以相互访问,我们在之前搭建好基础环境的三台虚拟机上进行Hadoop的搭建。

集群中各个节点角色规划的准则:

  • 根据软件工作特性和服务器硬件资源情况合理分配
  • 比如依赖内存工作的NameNode是不是部署在大内存机器上?

角色规划注意事项:

  • 资源上有抢夺冲突的,尽量不要部署在一起
  • 工作上需要互相配合的。尽量部署在一起

  1. 集群规划: 准备三台服务器
                                node1              node2              node3
HDFS集群守护进程:
               NameNode          Y                       
      SecondaryNameNode                              Y
              DataNode           Y                   Y                  Y   
YARN集群守护进程:         
        ResourceManager          Y
            NodeManager          Y                   Y                  Y                 

  1. 服务器基础环境准备
1.分别设置好三台服务器的主机名为node1,node2,node3
vim /etc/hostname

hadoop基础入门,# hadoop,hadoop,大数据,分布式

2.在每台服务器都建立好HOSTS映射
vim /etc/hosts

hadoop基础入门,# hadoop,hadoop,大数据,分布式
如果采用云服务部署,每台云服务节点对应的hosts文件中,将自身节点的ip地址填写为内网ip,其他节点为外网ip.

阿里云搭建hadoop集群服务器,内网、外网访问问题


  1. 将hadoop通信涉及到的端口号全部放开

Hadoop 3.x版本的组件之间的通信需要放开以下端口:

  • HDFS:
    • Namenode Web UI: 9870 (可配置)
    • Datanode 数据传输端口:9864 (可配置)
    • Datanode Web UI: 9864 (可配置)
    • Secondary Namenode Web UI: 9868 (可配置)
    • JournalNode RPC: 8485 (可配置)
    • NFS Gateway 服务:111, 2049 (可配置)
    • NFS Gateway Web UI: 2049 (可配置)
  • YARN:
    • Resource Manager Web UI: 8088 (可配置)
    • Node Manager Web UI: 8042 (可配置)
    • Application History Web UI: 8188 (可配置)
    • Timeline Server Web UI: 8188 (可配置)
  • MapReduce:
    • JobHistory Server Web UI: 19888 (可配置)

注意:这些端口号是默认配置值,具体的端口号需要根据实际部署情况进行配置。同时,不同的Hadoop组件之间也需要相互通信,具体的端口号需要根据实际部署情况进行配置。


  1. ssh免密登录配置

没有必要两两打通免密登录,这里为了方便后续脚本一键启动,可以只打通node1到node1,node2,node3的单向免密登录即可

此处以配置node1免密登录node1,node2,node3为例:

ssh-keygen #4个回车 生成公钥、私钥
ssh-copy-id node1、ssh-copy-id node2、ssh-copy-id node3 #

  1. 集群时间同步
yum -y install ntpdate

ntpdate ntp4.aliyun.com

hadoop基础入门,# hadoop,hadoop,大数据,分布式


  1. 在三台服务器上安装jdk 1.8
ubuntun:
sudo apt-get install openjdk-8-jdk

centos:
yum install java-1.8.0-openjdk* -y

  1. 创建统一的工作目录
mkdir -p /export/server #软件安装路径
mkdir -p /export/data #数据存储路径
mkdir -p /export/software #安装包存放路径

  1. 上传,解压Hadoop安装包(node1)
# hadoop-3.1.4-bin-snappy-CentOS7.tar.gz是已经编译好的安装包压缩包
tar zxvf hadoop-3.1.4-bin-snappy-CentOS7.tar.gz -C /export/server/

Hadoop安装包目录结构:

hadoop基础入门,# hadoop,hadoop,大数据,分布式


  1. 进入etc目录,编辑hadoop-env.sh配置文件
cd /export/server/hadoop-3.1.4/etc/hadoop/

vim hadoop-env.sh
#配置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre

#设置用户以执行对应角色shell命令
export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root 

  1. 编辑修改 core-site.xml
cd /export/server/hadoop-3.1.4/etc/hadoop/

vim core-site.xml
<configuration>     
<!-- 默认文件系统的名称。通过URI中schema区分不同文件系统。-->     
<!-- file:///本地文件系统 hdfs:// hadoop分布式文件系统 gfs://。-->     
<!-- hdfs文件系统访问地址:http://nn_host:8020(nn表示nameNode节点所在位置)。-->     
<property>         
    <name>fs.defaultFS</name>         
    <value>hdfs://node1:8020</value>     
</property>     
<!-- hadoop本地数据存储目录 format时自动生成 -->     
<property>         
     <name>hadoop.tmp.dir</name>         
     <value>/export/data/hadoop-3.1.4</value>     
</property>     
<!-- 在Web UI访问HDFS使用的用户名。-->     
<property>         
     <name>hadoop.http.staticuser.user</name>         
     <value>root</value>     
</property> 
</configuration>

  1. 编辑修改hdfs-site.xml
cd /export/server/hadoop-3.1.4/etc/hadoop/

vim hdfs-site.xml
<!--设定SNN运行主机和端口(主角色的辅助角色)-->
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>node2:9868</value>
 </property>

  1. 编辑修改mapred-site.xml
 cd /export/server/hadoop-3.1.4/etc/hadoop/

 vim mapred-site.xml
<!-- mr程序默认运行方式。yarn集群模式 local本地模式--> 
<property>     
   <name>mapreduce.framework.name</name>     
   <value>yarn</value> 
</property> 
<!-- MR App Master环境变量。--> 
<property>     
   <name>yarn.app.mapreduce.am.env</name>     
   <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> 
</property> 
<!-- MR MapTask环境变量。--> 
<property>     
   <name>mapreduce.map.env</name>     
   <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> 
</property> 
<!-- MR ReduceTask环境变量。--> 
<property>     
   <name>mapreduce.reduce.env</name>     
   <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> 
</property>

  1. 编辑修改yarn-site.xml
cd /export/server/hadoop-3.1.4/etc/hadoop/

vim yarn-site.xml
<!-- yarn集群主角色RM运行机器。--> 
<property>     
   <name>yarn.resourcemanager.hostname</name>     
   <value>node1</value> 
</property> 
<!-- 0.0.0.0表示该地址将监听所有网络接口上的请求,而不仅仅是监听localhost上的请求。8088是ResourceManager Web UI使用的端口号,可以根据实际情况进行更改。--> 
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>0.0.0.0:8088</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MR程序。--> 
<property>     
   <name>yarn.nodemanager.aux-services</name>     
   <value>mapreduce_shuffle</value> 
</property> 
<!-- 每个容器请求的最小内存资源(以MB为单位)。--> 
<property>     
   <name>yarn.scheduler.minimum-allocation-mb</name>     
   <value>512</value> 
</property> 
<!-- 每个容器请求的最大内存资源(以MB为单位)。--> 
<property>     
    <name>yarn.scheduler.maximum-allocation-mb</name>     
    <value>2048</value> 
</property> 
<!-- 容器虚拟内存与物理内存之间的比率。--> 
<property>     
    <name>yarn.nodemanager.vmem-pmem-ratio</name>     
    <value>4</value> 
</property>

  1. 编辑修改workers配置文件(配置从角色所在主机位置)
cd /export/server/hadoop-3.1.4/etc/hadoop/
vim workers
node1
node2
node3

  1. 分发同步安装包—在node1机器上将Hadoop安装包scp同步到其他机器
 cd /export/server/

 scp -r hadoop-3.1.4 root@node2:/export/server/

 scp -r hadoop-3.1.4 root@node3:/export/server/

  1. 配置hadoop的环境变量
  • 在node1上配置Hadoop环境变量
 vim /etc/profile

 export HADOOP_HOME=/export/server/hadoop-3.1.4

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 将修改后的环境变量同步其他机器
 scp /etc/profile root@node2:/etc/

 scp /etc/profile root@node3:/etc/
  • 重新加载环境变量 验证是否生效(3台机器)
 source /etc/profile

 hadoop #验证环境变量是否生效

hadoop基础入门,# hadoop,hadoop,大数据,分布式


部署小结

1.服务器基础环境

2.Hadoop源码编译

3.Hadoop配置文件修改

4.shell文件、4个xml文件、workers文件

5.配置文件集群同步


NameNode format(格式化操作)

首次启动HDFS时,必须对其进行格式化操作。

  • format本质上是初始化工作,进行HDFS清理和准备工作

命令:

hdfs namenode -format

format帮助创建了nameNode的工作目录,和nameNode初始化时相关文件。
hadoop基础入门,# hadoop,hadoop,大数据,分布式
hadoop基础入门,# hadoop,hadoop,大数据,分布式
注意:

1.首次启动之前需要format操作

2.format只能进行一次 后续不再需要

3.如果多次format除了造成数据丢失外,还会导致hdfs集群主从角色之间互不识别,通过删除所有机器hadoop.tmp.dir目录重新forma解决


hadoop集群启动和停止

手动逐个进程启动和停止:

  • 每台机器上每次手动启动关闭一个角色进程
  • HDFS集群
hdfs --daemon start namenode|datanode|secondarynamenode
hdfs --daemon stop namenode|datanode|secondarynamenode
  • YARN集群
yarn --daemon start resourcemanager|nodemanager
yarn --daemon stop resourcemanager|nodemanager

shell脚本一键启动停止:

此处的脚本一键启动停止,依赖于我们上面配置好的免密登录配置

  • 在node1上,使用软件自带的shell脚本一键启动
  • 前提:配置好机器之间的SSH免密登录和workers文件。

单独启动HDFS集群的启停脚本:

  • start-dfs.sh
  • stop-dfs.sh

单独启动YARN集群的启停脚本:

  • start-yarn.sh
  • stop-yarn.sh

启动Hadoop集群的启停脚本(包含上诉两个集群):

  • start-all.sh
  • stop-all.sh

hadoop基础入门,# hadoop,hadoop,大数据,分布式
启动完毕之后可以使用jps命令查看进程是否启动成功:
hadoop基础入门,# hadoop,hadoop,大数据,分布式
hadoop基础入门,# hadoop,hadoop,大数据,分布式
hadoop基础入门,# hadoop,hadoop,大数据,分布式


Hadoop启动日志路径:/export/server/hadoop-3.1.4/logs/

hadoop基础入门,# hadoop,hadoop,大数据,分布式


Web UI界面访问测试

Hadoop Web UI界面HDFS集群地址:http://namenode_host:9870

其中namenode_host是namenode运行所在机器的主机名或者ip, 如果使用主机名访问,别忘了在Windows配置hosts

hadoop基础入门,# hadoop,hadoop,大数据,分布式


Hadoop Web UI界面YARN集群地址:http://resourcemanager_host:8088/cluster

其中resourcemanager_host是resourcemanager运行所在机器的主机名或者ip,如果使用主机名访问,别忘了在Windows配置hosts

hadoop基础入门,# hadoop,hadoop,大数据,分布式


Hadoop HDFS初体验

  • 创建目录
hadoop fs -mkdir /dhy
  • 上传文件
hadoop fs -put hadoop-root-datanode-dhy.out.1 /dhy
  • 查询文件
hadoop fs -ls /

hadoop基础入门,# hadoop,hadoop,大数据,分布式
hadoop基础入门,# hadoop,hadoop,大数据,分布式


小结

  1. HDFS本质就是一个文件系统

  2. 有目录树结构 和Linux类似,分文件、文件夹

  3. 但是为什么上传一个小文件也这么慢?大家可以思考一下


Hadoop MapReduce + YARN初体验

  • 执行Hadoop官方自带的MapReduce案例 : 评估圆周率π的值
 cd /export/server/hadoop-3.1.4/share/hadoop/mapreduce/

 hadoop jar hadoop-mapreduce-examples-3.1.4.jar pi 2 4

hadoop基础入门,# hadoop,hadoop,大数据,分布式
hadoop基础入门,# hadoop,hadoop,大数据,分布式
访问Yarn提供的Web UI界面查看执行任务的结果:
hadoop基础入门,# hadoop,hadoop,大数据,分布式


小结

1.MapReduce本质是程序?

2.执行MapReduce的时候,为什么首先请求YARN?

3.MapReduce看上去好像是两个阶段?

4.先Map,再Reduce?

5.处理小数据的时候,MapReduce速度快吗?


Hadoop HDFS基准测试

测试写入速度

  • 确保HDFS集群和YARN集群成功启动
hadoop jar /export/server/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 10MB

说明:向HDFS文件系统中写入数据,10个文件,每个文件10MB,文件存放到/benchmarks/TestDFSIO中

Throughput:吞吐量、Average IO rate:平均IO率、IO rate std deviation:IO率标准偏差

hadoop基础入门,# hadoop,hadoop,大数据,分布式


测试读取速度

  • 确保HDFS集群和YARN集群成功启动
hadoop jar /export/server/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 10MB

说明:在HDFS文件系统中读入10个文件,每个文件10M

Throughput:吞吐量、Average IO rate:平均IO率、IO rate std deviation:IO率标准偏差

hadoop基础入门,# hadoop,hadoop,大数据,分布式


清除测试数据

  • 确保HDFS集群成功启动
hadoop jar /export/server/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4-tests.jar TestDFSIO -clean

说明:测试期间,会在HDFS集群上创建 /benchmarks目录,测试完毕后,我们可以清理该目录。

hadoop基础入门,# hadoop,hadoop,大数据,分布式文章来源地址https://www.toymoban.com/news/detail-738025.html


到了这里,关于Hadoop入门篇01---基础概念和部署教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop生态系统中的大数据基础知识教程

    作者:禅与计算机程序设计艺术 “Hadoop”是一个开源的分布式计算框架,基于云计算平台构建,提供海量数据的存储、分析处理和计算能力,广泛应用于金融、电信、互联网、移动通信等领域。Hadoop生态系统中存在大量的工程师和科学家,但这些人的水平参差不齐,各有所长

    2024年02月09日
    浏览(44)
  • 【大数据】Hadoop-3.3.4完全分布式安装(包含VMware16和Ubuntu22的下载安装及配置)、搭建、配置教程,以及Hadoop基础简介

    注:本篇文章主要涉及到: HDFS (分布式文件系统)、 YARN (资源管理和调度框架)、以及 MapReduce (离线计算)。 以下就是本篇文章所采用的的架构 。 (1)HDFS架构简述 HDFS架构图 注:上述的master、slave1、slave2均是主机名(结点名),可以和本篇文章不一致,但下面所有涉

    2023年04月17日
    浏览(98)
  • hadoop伪集群部署教程

    本文将介绍如何安装和配置Hadoop,一个用于分布式存储和处理大规模数据的开源框架。您将学习如何安装Java Development Kit (JDK) 和Hadoop,并进行必要的配置。通过按照本文提供的步骤,您将能够在自己的机器上搭建一个Hadoop伪集群,并通过浏览器访问Hadoop的管理页面。 jdk版本:

    2024年03月23日
    浏览(33)
  • 大数据:Hadoop HDFS,基础架构,去中心化,中心化模式,HDFS基础架构,虚拟机和云服务器部署HDFS

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月17日
    浏览(59)
  • springboot+vue基于Hadoop短视频流量数据分析与可视化系统的设计与实现【内含源码+文档+部署教程】

    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅 由于篇幅限制,想要获取完整文章或者源码,或者代做,拉到文章底部即可看到个人VX。 🍅 2023年

    2024年02月06日
    浏览(52)
  • 大数据学习第十二天(hadoop概念)

    1、服务器之间数据文件传递         1)服务器之间传递数据,依赖ssh协议         2)http协议是web网站之间的通讯协议,用户可已通过http网址访问到对应网站数据         3)ssh协议是服务器之间,或windos和服务器之间传递的数据的协议。支持shell指令的传输         4)在

    2024年04月14日
    浏览(40)
  • hadoop_虚拟机linux环境部署全教程

    hadoop_虚拟机linux环境部署: 一、 网卡设置 使用VMnet8虚拟网卡 网段设置为:192.168.88.0 网关设置为:192.168.88.2 二、安装Linux操作系统 下载地址:https://vault.centos.org/7.6.1810/isos/x86_64/ 三、Linux系统配置 修改主机名:hostnamectl set-hostname node1 修改IP地址:Vim /etc/sysconfig/network-scripts

    2024年02月06日
    浏览(34)
  • 《黑马程序员2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目》学习笔记总目录

    本文是对《黑马程序员新版大数据入门到实战教程》所有知识点的笔记进行总结分类。 学习视频:黑马程序员新版大数据 学习时总结的学习笔记以及思维导图会在后续更新,请敬请期待。 前言:配置三台虚拟机,为集群做准备(该篇章请到原视频进行观看,不在文章内详细

    2024年02月03日
    浏览(62)
  • Hadoop教程_编程入门自学教程_菜鸟教程-免费教程分享

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有

    2024年02月15日
    浏览(46)
  • Hadoop YARN HA 集群安装部署详细图文教程

    目录 一、YARN 集群角色、部署规划 1.1 集群角色--概述 1.2 集群角色--ResourceManager(RM)  1.3 集群角色--NodeManager(NM)  1.4 HA 集群部署规划 二、YARN RM 重启机制 2.1 概述  2.2 演示  2.2.1 不开启 RM 重启机制现象  2.3 两种实现方案与区别  2.3.1 Non-work-preserving RM restart 2.3.2 

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包