当前位置:   article > 正文

Hadoop集群安装配置教程

hadoop分布式集群安装与配置步骤

Hadoop集群安装配置教程


链接: https://pan.baidu.com/s/1rDyTLQKA5MvfVWc8CtoL_g
提取码:8v19
--来自百度网盘超级会员V6的分享

1、环境

名称物理IP说明版本操作系统
hadoop-master192.168.200.34名称节点3.1.3ubuntu20.04
hadoop-slave192.168.200.35数据节点3.1.3ubuntu20.04
  1. #添加主机名映射(两节点同步进行)
  2. root@hadoop-master:~# vim /etc/hosts
  3. root@hadoop-master:~# tail -2 /etc/hosts
  4. 192.168.200.34 hadoop-master
  5. 192.168.200.35 hadoop-slave

2、创建hadoop用户(两节点同步进行)

  1. #创建hadoop用户
  2. root@hadoop-master:~# useradd -m hadoop -s /bin/bash
  3. #设置hadoop密码
  4. root@hadoop-master:~# passwd hadoop
  5. #为新建的hadoop增加管理员权限
  6. root@hadoop-master:~# adduser hadoop sudo

3、安装SSH、配置SSH无密码登陆

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

  1. #安装openssh-server
  2. hadoop@hadoop-master:~$ sudo apt-get -y install openssh-server
  1. #生成密匙
  2. hadoop@hadoop-master:~$ ssh-keygen -t rsa
  3. #加入授权,为了让Master节点能够无密码SSH登录本机
  4. hadoop@hadoop-master:~$ cd .ssh/
  5. hadoop@hadoop-master:~/.ssh$ cat id_rsa.pub > authorized_keys
  1. #将hadoop-master节点上的公匙传输到hadoop-slave节点
  2. hadoop@hadoop-master:~/.ssh$ scp ~/.ssh/id_rsa.pub hadoop@hadoop-slave:/home/hadoop/
  3. #接着在hadoop-slave节点上,将SSH公匙加入授权:
  4. hadoop@hadoop-slave:~$ mkdir .ssh
  5. hadoop@hadoop-slave:~$ cat id_rsa.pub > ./.ssh/authorized_keys

4、安装Java环境(两节点同步进行)

  1. #创建JDK存放目录
  2. hadoop@hadoop-master:~$ sudo mkdir -p /usr/lib/jvm
  3. #把JDK文件解压到/usr/lib/jvm目录下
  4. hadoop@hadoop-master:~$ sudo tar xf jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm/
  1. #添加环境变量
  2. hadoop@hadoop-master:~$ vim ~/.bashrc
  3. hadoop@hadoop-master:~$ tail -4 ~/.bashrc
  4. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
  5. export JRE_HOME=${JAVA_HOME}/jre
  6. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  7. export PATH=${JAVA_HOME}/bin:$PATH
  8. #使环境变量立即生效
  9. hadoop@hadoop-master:~$ source ~/.bashrc
  1. #检查java是否安装成功
  2. hadoop@hadoop-master:~$ java -version
  3. java version "1.8.0_162"
  4. Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
  5. Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

5、安装Hadoop3.1.3(两节点同步进行)

  1. #安装hadoop
  2. hadoop@hadoop-master:~$ sudo tar xf hadoop-3.1.3.tar.gz -C /usr/local/
  3. hadoop@hadoop-master:~$ cd /usr/local/
  4. hadoop@hadoop-master:/usr/local$ sudo mv hadoop-3.1.3 hadoop
  5. hadoop@hadoop-master:/usr/local$ sudo chown -R hadoop:hadoop hadoop
  1. #验证Hadoop是否可用
  2. hadoop@hadoop-master:/usr/local$ cd hadoop/
  3. hadoop@hadoop-master:/usr/local/hadoop$ ./bin/hadoop version
  4. Hadoop 3.1.3
  5. Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
  6. Compiled by ztang on 2019-09-12T02:47Z
  7. Compiled with protoc 2.5.0
  8. From source with checksum ec785077c385118ac91aadde5ec9799
  9. This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.3.jar

6、配置PATH变量(两节点同步进行)

  1. #添加环境变量
  2. hadoop@hadoop-master:~$ vim ~/.bashrc
  3. hadoop@hadoop-master:~$ tail -1 ~/.bashrc
  4. export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
  5. #使环境变量立即生效
  6. hadoop@hadoop-master:~$ source ~/.bashrc

7、配置集群/分布式环境(两节点同步进行)

在配置集群/分布式模式时,需要修改/usr/local/hadoop/etc/hadoop目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workerscore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml共5个文件,更多设置项可查看官方说明。

1、修改文件workers
需要把所有数据节点的主机名写入该文件,每行一个,默认为 localhost(即把本机作为数据节点),所以,在伪分布式配置时,就采用了这种默认的配置,使得节点既作为名称节点也作为数据节点。在进行分布式配置时,可以保留localhost,让Master节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让Master节点仅作为名称节点使用。
本教程让Master节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下一行内容:

  1. hadoop@hadoop-master:~$ cd /usr/local/hadoop/etc/hadoop/
  2. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ vim workers
  3. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat workers
  4. hadoop-slave

2、修改文件core-site.xml
请把core-site.xml文件修改为如下内容:

  1. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano core-site.xml
  2. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat core-site.xml
  3. ......
  4. <configuration>
  5. <property>
  6. <name>fs.defaultFS</name>
  7. <value>hdfs://hadoop-master:9000</value>
  8. </property>
  9. <property>
  10. <name>hadoop.tmp.dir</name>
  11. <value>file:/usr/local/hadoop/tmp</value>
  12. <description>Abase for other temporary directories.</description>
  13. </property>
  14. </configuration>

各个配置项的含义可以参考前面伪分布式模式时的介绍,这里不再赘述。

3、修改文件hdfs-site.xml
对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程只有一个Slave节点作为数据节点,即集群中只有一个数据节点,数据只能保存一份,所以 ,dfs.replication的值还是设置为 1。hdfs-site.xml具体内容如下:

  1. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano hdfs-site.xml
  2. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat hdfs-site.xml
  3. ......
  4. <configuration>
  5. <property>
  6. <name>dfs.namenode.secondary.http-address</name>
  7. <value>hadoop-master:50090</value>
  8. </property>
  9. <property>
  10. <name>dfs.replication</name>
  11. <value>1</value>
  12. </property>
  13. <property>
  14. <name>dfs.namenode.name.dir</name>
  15. <value>file:/usr/local/hadoop/tmp/dfs/name</value>
  16. </property>
  17. <property>
  18. <name>dfs.datanode.data.dir</name>
  19. <value>file:/usr/local/hadoop/tmp/dfs/data</value>
  20. </property>
  21. </configuration>

4、修改文件mapred-site.xml
把mapred-site.xml文件配置成如下内容:

  1. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano mapred-site.xml
  2. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat mapred-site.xml ......
  3. <configuration>
  4. <property>
  5. <name>mapreduce.framework.name</name>
  6. <value>yarn</value>
  7. </property>
  8. <property>
  9. <name>mapreduce.jobhistory.address</name>
  10. <value>hadoop-master:10020</value>
  11. </property>
  12. <property>
  13. <name>mapreduce.jobhistory.webapp.address</name>
  14. <value>hadoop-master:19888</value>
  15. </property>
  16. <property>
  17. <name>yarn.app.mapreduce.am.env</name>
  18. <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
  19. </property>
  20. <property>
  21. <name>mapreduce.map.env</name>
  22. <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
  23. </property>
  24. <property>
  25. <name>mapreduce.reduce.env</name>
  26. <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
  27. </property>
  28. </configuration>

5、修改文件 yarn-site.xml
请把yarn-site.xml文件配置成如下内容:

  1. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano yarn-site.xml
  2. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat yarn-site.xml
  3. ......
  4. <configuration>
  5. <property>
  6. <name>yarn.resourcemanager.hostname</name>
  7. <value>hadoop-master</value>
  8. </property>
  9. <property>
  10. <name>yarn.nodemanager.aux-services</name>
  11. <value>mapreduce_shuffle</value>
  12. </property>
  13. </configuration>

6、配置hadoop JAVA环境变量

  1. hadoop@hadoop-master:/usr/local/hadoop$ vim ./etc/hadoop/hadoop-env.sh
  2. hadoop@hadoop-master:/usr/local/hadoop$ sed -n "54p" ./etc/hadoop/hadoop-env.sh
  3. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162

7、首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下:

  1. hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cd /usr/local/hadoop/
  2. hadoop@hadoop-master:/usr/local/hadoop$ ./bin/hdfs namenode -format

8、现在就可以启动Hadoop了,启动需要在Master节点上进行,执行如下命令:

  1. hadoop@hadoop-master:/usr/local/hadoop$ ./sbin/start-dfs.sh
  2. hadoop@hadoop-master:/usr/local/hadoop$ ./sbin/start-yarn.sh
  3. hadoop@hadoop-master:/usr/local/hadoop$ ./sbin/mr-jobhistory-daemon.sh start historyserver

通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在Master节点上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer进程,如下所示。

  1. hadoop@hadoop-master:/usr/local/hadoop$ jps
  2. 17728 JobHistoryServer
  3. 16992 NameNode
  4. 17399 ResourceManager
  5. 17213 SecondaryNameNode
  6. 17805 Jps

在Slave节点可以看到DataNode和NodeManager进程,如下所示。

  1. hadoop@hadoop-slave:/usr/local/hadoop$ jps
  2. 13738 NodeManager
  3. 13581 DataNode
  4. 13871 Jps

缺少任一进程都表示出错。另外还需要在Master节点上通过命令hdfs dfsadmin -report查看数据节点是否正常启动,如果屏幕信息中的“Live datanodes”不为 0 ,则说明集群启动成功。由于本教程只有1个Slave节点充当数据节点,因此,数据节点启动成功以后,会显示如下图所示信息。image.png-49.4kB

也可以在Linux系统的浏览器中输入地址“http://hadoop-master:9870/”,通过 Web 页面看到查看名称节点和数据节点的状态。如果不成功,可以通过启动日志排查原因。

这里再次强调,伪分布式模式和分布式模式切换时需要注意以下事项:

  • 从分布式切换到伪分布式时,不要忘记修改slaves配置文件;
  • 在两者之间切换时,若遇到无法正常启动的情况,可以删除所涉及节点的临时文件夹,这样虽然之前的数据会被删掉,但能保证集群正确启动。所以,如果集群以前能启动,但后来启动不了,特别是数据节点无法启动,不妨试着删除所有节点(包括Slave节点)上的/usr/local/hadoop/tmp文件夹,再重新执行一次hdfs namenode -format,再次启动即可。

8、执行分布式实例

执行分布式实例过程与伪分布式模式一样,首先创建HDFS上的用户目录,命令如下:

hadoop@hadoop-master:/usr/local/hadoop$ hdfs dfs -mkdir -p /user/hadoop

然后,在HDFS中创建一个input目录,并把/usr/local/hadoop/etc/hadoop目录中的配置文件作为输入文件复制到input目录中,命令如下:

  1. hadoop@hadoop-master:/usr/local/hadoop$ hdfs dfs -mkdir input
  2. hadoop@hadoop-master:/usr/local/hadoop$ hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

接着就可以运行 MapReduce 作业了,命令如下:

hadoop@hadoop-master:/usr/local/hadoop$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

运行时的输出信息与伪分布式类似,会显示MapReduce作业的进度,如下所示。

  1. ......
  2. 2022-04-14 19:38:09,651 INFO mapreduce.Job: Running job: job_1649936194163_0002
  3. 2022-04-14 19:38:19,778 INFO mapreduce.Job: Job job_1649936194163_0002 running in uber mode : false
  4. 2022-04-14 19:38:19,778 INFO mapreduce.Job: map 0% reduce 0%
  5. 2022-04-14 19:38:23,815 INFO mapreduce.Job: map 100% reduce 0%
  6. 2022-04-14 19:38:27,858 INFO mapreduce.Job: map 100% reduce 100%
  7. 2022-04-14 19:38:27,877 INFO mapreduce.Job: Job job_1649936194163_0002 completed successfully
  8. ......

执行过程可能会有点慢,但是,如果迟迟没有进度,比如5分钟都没看到进度变化,那么不妨重启Hadoop再次测试。若重启还不行,则很有可能是内存不足引起,建议增大虚拟机的内存,或者通过更改YARN的内存配置来解决。

在执行过程中,可以在Linux系统中打开浏览器,在地址栏输入“http://hadoop-master:8088/cluster”,通过Web界面查看任务进度,在Web界面点击 “Tracking UI” 这一列的History连接,可以看到任务的运行信息,如下图所示。image.png-148.8kB

执行完毕后的输出结果如下所示。

  1. hadoop@hadoop-master:/usr/local/hadoop$ hdfs dfs -cat output/*
  2. 1 dfsadmin
  3. 1 dfs.replication
  4. 1 dfs.namenode.secondary.http
  5. 1 dfs.namenode.name.dir
  6. 1 dfs.datanode.data.dir

最后,关闭Hadoop集群,需要在Master节点执行如下命令:

  1. stop-yarn.sh
  2. stop-dfs.sh
  3. mr-jobhistory-daemon.sh stop historyserver

至此,就顺利完成了Hadoop集群搭建。

本文参考:http://dblab.xmu.edu.cn/blog/2775-2/

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号