Hadoop集群安装配置教程
- Hadoop集群安装配置教程
- 1、环境
- 2、创建hadoop用户(两节点同步进行)
- 3、安装SSH、配置SSH无密码登陆
- 4、安装Java环境(两节点同步进行)
- 5、安装Hadoop3.1.3(两节点同步进行)
- 6、配置PATH变量(两节点同步进行)
- 7、配置集群/分布式环境(两节点同步进行)
- 8、执行分布式实例
链接: https://pan.baidu.com/s/1rDyTLQKA5MvfVWc8CtoL_g
提取码:8v19
--来自百度网盘超级会员V6的分享
1、环境
名称 | 物理IP | 说明 | 版本 | 操作系统 |
---|---|---|---|---|
hadoop-master | 192.168.200.34 | 名称节点 | 3.1.3 | ubuntu20.04 |
hadoop-slave | 192.168.200.35 | 数据节点 | 3.1.3 | ubuntu20.04 |
#添加主机名映射(两节点同步进行)
root@hadoop-master:~# vim /etc/hosts
root@hadoop-master:~# tail -2 /etc/hosts
192.168.200.34 hadoop-master
192.168.200.35 hadoop-slave
2、创建hadoop用户(两节点同步进行)
#创建hadoop用户
root@hadoop-master:~# useradd -m hadoop -s /bin/bash
#设置hadoop密码
root@hadoop-master:~# passwd hadoop
#为新建的hadoop增加管理员权限
root@hadoop-master:~# adduser hadoop sudo
3、安装SSH、配置SSH无密码登陆
集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
#安装openssh-server
hadoop@hadoop-master:~$ sudo apt-get -y install openssh-server
#生成密匙
hadoop@hadoop-master:~$ ssh-keygen -t rsa
#加入授权,为了让Master节点能够无密码SSH登录本机
hadoop@hadoop-master:~$ cd .ssh/
hadoop@hadoop-master:~/.ssh$ cat id_rsa.pub > authorized_keys
#将hadoop-master节点上的公匙传输到hadoop-slave节点
hadoop@hadoop-master:~/.ssh$ scp ~/.ssh/id_rsa.pub hadoop@hadoop-slave:/home/hadoop/
#接着在hadoop-slave节点上,将SSH公匙加入授权:
hadoop@hadoop-slave:~$ mkdir .ssh
hadoop@hadoop-slave:~$ cat id_rsa.pub > ./.ssh/authorized_keys
4、安装Java环境(两节点同步进行)
#创建JDK存放目录
hadoop@hadoop-master:~$ sudo mkdir -p /usr/lib/jvm
#把JDK文件解压到/usr/lib/jvm目录下
hadoop@hadoop-master:~$ sudo tar xf jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm/
#添加环境变量
hadoop@hadoop-master:~$ vim ~/.bashrc
hadoop@hadoop-master:~$ tail -4 ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#使环境变量立即生效
hadoop@hadoop-master:~$ source ~/.bashrc
#检查java是否安装成功
hadoop@hadoop-master:~$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
5、安装Hadoop3.1.3(两节点同步进行)
#安装hadoop
hadoop@hadoop-master:~$ sudo tar xf hadoop-3.1.3.tar.gz -C /usr/local/
hadoop@hadoop-master:~$ cd /usr/local/
hadoop@hadoop-master:/usr/local$ sudo mv hadoop-3.1.3 hadoop
hadoop@hadoop-master:/usr/local$ sudo chown -R hadoop:hadoop hadoop
#验证Hadoop是否可用
hadoop@hadoop-master:/usr/local$ cd hadoop/
hadoop@hadoop-master:/usr/local/hadoop$ ./bin/hadoop version
Hadoop 3.1.3
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
Compiled by ztang on 2019-09-12T02:47Z
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.3.jar
6、配置PATH变量(两节点同步进行)
#添加环境变量
hadoop@hadoop-master:~$ vim ~/.bashrc
hadoop@hadoop-master:~$ tail -1 ~/.bashrc
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
#使环境变量立即生效
hadoop@hadoop-master:~$ source ~/.bashrc
7、配置集群/分布式环境(两节点同步进行)
在配置集群/分布式模式时,需要修改/usr/local/hadoop/etc/hadoop
目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个文件,更多设置项可查看官方说明。
1、修改文件workers
需要把所有数据节点的主机名写入该文件,每行一个,默认为 localhost(即把本机作为数据节点),所以,在伪分布式配置时,就采用了这种默认的配置,使得节点既作为名称节点也作为数据节点。在进行分布式配置时,可以保留localhost,让Master节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让Master节点仅作为名称节点使用。
本教程让Master节点仅作为名称节点使用,因此将workers文件中原来的localhost删除,只添加如下一行内容:
hadoop@hadoop-master:~$ cd /usr/local/hadoop/etc/hadoop/
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ vim workers
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat workers
hadoop-slave
2、修改文件core-site.xml
请把core-site.xml文件修改为如下内容:
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano core-site.xml
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat core-site.xml
......
fs.defaultFS
hdfs://hadoop-master:9000
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
各个配置项的含义可以参考前面伪分布式模式时的介绍,这里不再赘述。
3、修改文件hdfs-site.xml
对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程只有一个Slave节点作为数据节点,即集群中只有一个数据节点,数据只能保存一份,所以 ,dfs.replication的值还是设置为 1。hdfs-site.xml具体内容如下:
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano hdfs-site.xml
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat hdfs-site.xml
......
dfs.namenode.secondary.http-address
hadoop-master:50090
dfs.replication
1
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
4、修改文件mapred-site.xml
把mapred-site.xml文件配置成如下内容:
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano mapred-site.xml
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat mapred-site.xml ......
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
hadoop-master:10020
mapreduce.jobhistory.webapp.address
hadoop-master:19888
yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=/usr/local/hadoop
mapreduce.map.env
HADOOP_MAPRED_HOME=/usr/local/hadoop
mapreduce.reduce.env
HADOOP_MAPRED_HOME=/usr/local/hadoop
5、修改文件 yarn-site.xml
请把yarn-site.xml文件配置成如下内容:
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ nano yarn-site.xml
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cat yarn-site.xml
......
yarn.resourcemanager.hostname
hadoop-master
yarn.nodemanager.aux-services
mapreduce_shuffle
6、配置hadoop JAVA环境变量
hadoop@hadoop-master:/usr/local/hadoop$ vim ./etc/hadoop/hadoop-env.sh
hadoop@hadoop-master:/usr/local/hadoop$ sed -n "54p" ./etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
7、首次启动Hadoop集群时,需要先在Master节点执行名称节点的格式化(只需要执行这一次,后面再启动Hadoop时,不要再次格式化名称节点),命令如下:
hadoop@hadoop-master:/usr/local/hadoop/etc/hadoop$ cd /usr/local/hadoop/
hadoop@hadoop-master:/usr/local/hadoop$ ./bin/hdfs namenode -format
8、现在就可以启动Hadoop了,启动需要在Master节点上进行,执行如下命令:
hadoop@hadoop-master:/usr/local/hadoop$ ./sbin/start-dfs.sh
hadoop@hadoop-master:/usr/local/hadoop$ ./sbin/start-yarn.sh
hadoop@hadoop-master:/usr/local/hadoop$ ./sbin/mr-jobhistory-daemon.sh start historyserver
通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在Master节点上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer进程,如下所示。
hadoop@hadoop-master:/usr/local/hadoop$ jps
17728 JobHistoryServer
16992 NameNode
17399 ResourceManager
17213 SecondaryNameNode
17805 Jps
在Slave节点可以看到DataNode和NodeManager进程,如下所示。
hadoop@hadoop-slave:/usr/local/hadoop$ jps
13738 NodeManager
13581 DataNode
13871 Jps
缺少任一进程都表示出错。另外还需要在Master节点上通过命令hdfs dfsadmin -report
查看数据节点是否正常启动,如果屏幕信息中的“Live datanodes”不为 0 ,则说明集群启动成功。由于本教程只有1个Slave节点充当数据节点,因此,数据节点启动成功以后,会显示如下图所示信息。
也可以在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目录中,命令如下:
hadoop@hadoop-master:/usr/local/hadoop$ hdfs dfs -mkdir input
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作业的进度,如下所示。
......
2022-04-14 19:38:09,651 INFO mapreduce.Job: Running job: job_1649936194163_0002
2022-04-14 19:38:19,778 INFO mapreduce.Job: Job job_1649936194163_0002 running in uber mode : false
2022-04-14 19:38:19,778 INFO mapreduce.Job: map 0% reduce 0%
2022-04-14 19:38:23,815 INFO mapreduce.Job: map 100% reduce 0%
2022-04-14 19:38:27,858 INFO mapreduce.Job: map 100% reduce 100%
2022-04-14 19:38:27,877 INFO mapreduce.Job: Job job_1649936194163_0002 completed successfully
......
执行过程可能会有点慢,但是,如果迟迟没有进度,比如5分钟都没看到进度变化,那么不妨重启Hadoop再次测试。若重启还不行,则很有可能是内存不足引起,建议增大虚拟机的内存,或者通过更改YARN的内存配置来解决。
在执行过程中,可以在Linux系统中打开浏览器,在地址栏输入“http://hadoop-master:8088/cluster”,通过Web界面查看任务进度,在Web界面点击 “Tracking UI” 这一列的History连接,可以看到任务的运行信息,如下图所示。
执行完毕后的输出结果如下所示。
hadoop@hadoop-master:/usr/local/hadoop$ hdfs dfs -cat output/*
1 dfsadmin
1 dfs.replication
1 dfs.namenode.secondary.http
1 dfs.namenode.name.dir
1 dfs.datanode.data.dir
最后,关闭Hadoop集群,需要在Master节点执行如下命令:
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver
至此,就顺利完成了Hadoop集群搭建。
本文参考:http://dblab.xmu.edu.cn/blog/2775-2/