Hadoop集群环境搭建2
之前写过一篇hadoop的搭建,见Hadoop集群环境搭建1,但是这个是先安装好每台虚拟机再配置文件。所以,这篇文章采用的是克隆虚拟机的方法,但是还是踩了很多坑,主要就是配置文件的问题,这个搭建完之后,能够简单计算PI的值和运行hadoop自带的包。但是在配置过程中仍然忘记设置虚拟机为静态,踩了很多坑,很烦!不过也了解了很多。
1.JDK和Hadoop环境安装
(1) 新建目录存放JDK和Hadoop
在master中新建目录bigdata
1 | # mkdir -p /opt/bigdata |
将下载好的JDK包和Hadoop包上传至master主机中/opt/bigdata下
(2) 解压JDK和Hadoop
在bigdata目录下执行以下命令
1 | # tar -zxvf jdk-8u131-linux-x64.tar.gz |
1 | # tar -zxvf hadoop.tar.gz |
(3) 配置JDK和Hadoop环境变量
1 | vi /etc/profile |
根据自己的路径在末尾添加以下内容
1 | export JAVA_HOME=/opt/bigdata/jdk1.8.0_131 |
:wq保存退出
1 | source /etc/profile |
2.修改配置文件
首先创建以下目录,方便配置hadoop文件
1 | mkdir /opt/bigdata/hadoop-3.1.3/tmp #用来存放临时文件 |
1 | cd /opt/bigdata/hadoop-3.1.3/etc/hadoop |
我们需要 core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml进行配置
(1) 配置hadoop-env.sh
1 | vi hadoop-env.sh |
查找JAVA_HOME配置的位置
1 | :/export JAVA_HOME |
输入JAVA_HOME的绝对路径
export JAVA_HOME=/opt/bigdata/jdk1.8.0_131(把前面的#注释去掉)
(2) 配置core-site.xml
1 | vi core-site.xml |
在修改为
1 | <configuration> |
(3) 配置hdfs-site.xml
1 | vi hdfs-site.xml |
1 | <configuration> |
(4) 配置mapred-site.xml
1 | <configuration> |
(5) 配置yarn-site.xml
1 | <configuration> |
(6) 配置slavers
如果没有配置hosts,必须输入相应主机的ip地址,这里可以先填主机名,后面会配置hosts,hadoop会把配置在这里的主机当作datanode。hadoop3.0以后slaves更名为workers了,所以我们使用如下命令:
1 | vi workers |
删除
localhost
增加
node1
node2
node3
(7) 修改start-dfs.sh等文件
需要进入hadoop安装目录下的sbin文件夹
1.对于start-dfs.sh和stop-dfs.sh文件,添加下列参数:
1 | HDFS_DATANODE_USER=root |
2.同样地,对于start-yarn.sh和stop-yarn.sh文件,添加下列参数:
1 |
|
3.克隆虚拟机
这里建议先使用以下vmware快照,在继续往下进行首先先关闭防火墙,再使用vmware的克隆功能,完整克隆master
1 | systemctl status firewalld.service |
4.修改虚拟机host
(1) 更改各主机名字
为了能够更方便的识别主机,将四台虚拟机的名字分别修改为master、node1、node2、node3
注意切换到root账户下
1 | vi /etc/hostname #编程hostname配置文件 |
点击Esc,再:wq保存退出
另外三个虚拟机同样操作更改名字
(2) 开启主机的DHCP模式,自动获取ip地址
不建议使用这个方法,使用静态IP配置的方法参考以下链接,动态IP的地址会改变,hosts文件得重新配置1 | vi /etc/sysconfig/network-scripts/ifcfg-ens33 |
重启网卡
1 | service network restart |
在四台虚拟机中分别进行以上操作
之后输入ip addr,记下四个虚拟机的ip地址
| 主机名 | ip地址 |
|---|---|
| master | 192.168.136.131 |
| node1 | 192.168.136.133 |
| node2 | 192.168.136.134 |
| node3 | 192.168.136.135 |
(3) 配置hosts
在每台虚拟机上
配置hosts主要是为了让机器能够相互识别
注:hosts文件是域名分析文件,在hosts文件内配置了ip地址和主机名的对应关系,配置之后,通过主机名,电脑就可以定位到相应的ip地址
1 | vi /etc/hosts |
在hosts文件中输入一下内容:
注意要与实际ip和主机名对应(4) SSH配置
1 | ssh-keygen |
ssh一路回车
使用如下命令将公钥复制到node1、node2和node3节点中:
1 | ssh-copy-id root@node1 |
在master节点下输入试实验是否能免密登陆,第一次登陆可能需要输入密码
1 | ssh node1 |
5.检查hadoop运行情况
在master节点下执行以下操作1.格式化namenode
第一次启动集群,在master虚拟机的hadoop-3.1.3目录下执行
1 | bin/hdfs namenode -format |
如果多次格式化会出现错误,参考这篇文章https://blog.csdn.net/qq_41059374/article/details/80695581
2.启动
1 | start-all.sh |
3.检查进程
master
node1
node2
node3
20
- 进入管理页面
在浏览器地址栏中输入以下命令
| 界面 | 地址 |
|---|---|
| 管理页面 | http://localhost:8088 |
| NameNode界面 | http://localhost:9870 |
6.Hadoop运行实例
(1) 运行wordcount
进入hadoop-3.1.3目录
(1) 创建Input文件夹
1 | # hdfs dfs -mkdir /Input |
(2) 将hadoop-3.1.3下已经存在的LICENSE.txt文件上传到hdfs的/Input目录下
1 | # hdfs dfs -put LICENSE.txt /Input |
查看已经上传成功
1 | hdfs dfs -ls /Input |
(3) 运行hadoop安装包中自带的wordcount程序
运行share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar这个java程序,调用wordcount方法
1 | # hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /Input/LICENSE.txt /Input/Output |
(4) 查看云端的/Output/part-r-00000文件
1 | hdfs dfs -cat /Output/part-r-00000 |
(2) 计算PI的值
start-all.sh启动集群后
进入hadoop-3.1.3的目录1 | hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1 |
Hadoop计算PI的方法属于是采用大量采样的统计学方法,还是属于数据密集型的工作,如果最后两个1改的越大,计算的越慢,但是结果越准确。





















