1、设置Hadoop配置文件
安装Hadoop完全分布模式,一共有5个文件需要配置,分别是:
hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
进入hadoop配置文件所在目录
cd ${HADOOP_HOME}/etc/hadoop
(1)设置hadoop-env.sh
vi hadoop-env.sh
找到export JAVA_HOME一行,把行首的#去掉,并按实际修改JAVA_HOME的值
#The java implementation to use.(这行不用动)
Export JAVA_HOME=/home/用户名/jdk(这里放的是java的路径,尽量写实际路径,不要写软链接,有时候会NOT a valid JAR)
- 设置core-site.xml
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/wmy/hadoop/tmp</value>
</property>
</configuration>
文本中wmy是用户名,按照实际填写
node01是主机名,尽量设置为主机IP,也可以设置为主机名
2.设置hdfs-site.xml
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
// dfs.replication的默认值是3,因为我们只有两个节点,所以值设置为2
3.设置mapred-site.xml
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
mapreduce.framework.name默认值为local,设置为yarn,让MaoReduce程序运行在YARN框架上
4.设置yarn-site.xml
vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
yarn.resourcemanager.hostname属性为资源资源管理器的主机,设置为主机名或者IP地址
尽量设置为IP地址,不然会遇到一点点麻烦,8088端口被拒绝或繁忙
5.设置slaves文件//设置datanode节点是哪些主机
cd ~/hadoop/etc/hadoop
vi slaves
将原有内容删除,添加以下内容(原有内容的意思:以本机作为datanode节点)
修改为:
node02
node03
(添加的是两个作为datanode节点的主机名,也就是另外两个主机名)
2、克隆虚拟机
克隆虚拟机是因为使用scp 分发文件时会遇到权限不够的问题
克隆虚拟机要在第一台虚拟机配置完文件之后在克隆
3、修改主机名
修改克隆出来的第一台主机,用vi命令编辑/etc/hostname
sudo vi /etc/hostname
将原有内容删除,添加
node01
重启使之生效
sudo reboot
修改克隆出来的第二台主机,用vi命令编辑/etc/hostname
sudo vi /etc/hostname
将原有内容删除,添加
node02
重启使之生效
sudo reboot
修改克隆出来的第三台主机,用vi命令编辑/etc/hostname
sudo vi /etc/hostname
将原有内容删除,添加
node03
重启使之生效
sudo reboot
4、配置网络 (注意IP地址不能和网关完全一样)
更改网络配置
sudo vi /etc/network/interfaces
重新启动网络服务
sudo /etc/init.d/networking restart
网络配置
auto ens33
iface ens33 inet static
#自己想要设置的ip
address 192.168.31.0
#子网掩码
netmask 255.255.255.0
#网关
gateway 192.168.31.2
#DNS服务器配置
dns-nameserver 114.114.114.114
重启虚拟机
sudo reboot
每台虚拟机都要固定网络
5、映射IP地址及主机名
sudo vi /etc/hosts
192.168.30.131 node01
192.168.30.132 node02
192.168.30.133 node03
IP地址和主机名要按实际情况填写
6、设置免密登录
- 在node01上生成密钥对
ssh-keygen -t rsa
其中rsa表示加密算法
输入上面一条命令后需要敲击三次回车键,之后系统会自动在~/.ssh目录下生成
公钥(id_rsa.pub)和私钥(id_rsa),可通过命令 ls ~/.ssh查看
ls ~/.ssh
- 将noe01公钥id_rsa.pub复制到node01、node02、node03 主机上
ssh-copy-id -i ~/.ssh/id_rsa.pub node01
ssh-copy-id -i ~/.ssh/id_rsa.pub node02
ssh-copy-id -i ~/.ssh/id_rsa.pub node03
输入完命令后按提示进行就行
- 验证免密登录
ssh node01
ssh node02
ssh node03
7、安装NTP服务
完全分布式模式由多台主机组成,各个主机的时间可能存在较大差异。如果时间差异较大,
执行MapReduce程序的时候会存在问题。NTP服务通过获取网络时间使集群内不同主机的时间
保持一致。默认安装Ubuntu操作系统时,不会安装NTP服务。
在三台主机上分别安装NTP服务,命令如下(安装NTP服务时需联网)
sudo apt-get install ntp
查看服务是否运行
sudo dpkg -l |grep ntp
8、格式化HDFS
在node01主机上操作,命令如下(只需要在namenode主机上操作,其他主机不需要)
hdfs namenode -format
(这个只能操作一次,操作多次会造成namenode节点和datanode节点的VERSION文件中clusterID不同,会丢失DataNode进程)
解决办法:
停止 HDFS 集群后,同时删除NameNode节点和DataNode节点中配置的存储 Hadoop 数据的文件目录的所有子目录及文件,如我们配置的hadoopData目录下的所有子目录及文件。接下来,再使用hdfs namenode -format命令重新格式化NameNode节点,然后重新启动 HDFS 集群,即可!
9、启动Hadoop
启动命令只需要在node01上操作
可以使用分别启动HDFS和YARN
start-dfs.sh
start-yarn.sh
或者使用以下命令启动HDFS和YARN
start-all.sh
10、验证Hadoop进程
使用jps命令分别在所有主机上验证
jps
node01主机上包含以下三个进程表示Hadoop启动成功
SecondaryNameNode
NameNode
ResourceManager
在node02和node03上分别执行jps命令,都包含以下两个进程表示Hadoop启动成功
NodeManager
DataNode
如果某个主机少了某个进程,应该到对应主机去找相关的log查看原因,log存放在$HADOOP HOME/logs 目录下。例如,node3主机少了DataNode进程,则应该进入node3主机的$(HADOOP HOME)/logs目录下,查看DataNode 相关的log,找到含有“WARN"“Error" "Exception”等的关键字句,通过上网搜索关键字句找到解决问题的办法。
ssh node3
cd~/hadoop-2.7.3/logs
cat hadoop-hadoop-datanode-node 3.log
11、通过Web访问Hadoop
- HDFS Web界面
在Windows 的浏览器中,输入网址 http://192.168.30.131:50070,可以查看NameNode和DataNode信息,如图下图所示。其中,192.168.30.131表示Master的IP地址(namenode的IP地址),请根据实际情况修改。
单击Web页面的Datanodes查看DataNode信息,如图所示,有两个DataNode 正在运行
Windows浏览器中,输入网址http://192.168.30.131:50090,可以查看SecondaryNameNode 信息,如下图所示
(2)YARN Web界面
在Windows的浏览器中,输人网址http://192.168.30.131:8088,可以查看集群所有应用程序的
信息,如图所示,可以看到Active Nodes为2,说明集群有两个NodeManager节点正在运行。
10、测试Hadoop
通过一个MapReduce程序测试Hadoop,统计HDFS中/input/data.txt文件内单词出现的次数。
(1)在Ubuntu操作系统的~目录下,创建一个文本文件data.txt。
cd input
vi data.txt
在data.txt文件中输人如下内容,保存并退出。
HelloWorld
HelloHadoop
- 在HDFS创建input文件夹,命令如下。
hdfs dfs -mkdir ~/1nput
- 将data.txt 上传到HDFS,命令如下。
hdfs dfs -put data.txt ~/input
- 查看是否上传成功,命令如下。
hdfs dfs -1s ~/input
(5)运行MapReduce WordCount例子,命令如下。
cd /hadoop/share /hadoop /mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount ~/input/data.txt/output
说明:第二条命令在同一行输入。
(6)查看结果。
hdfs dfs -cat /output/part-r-00000
Hadoop 1
He1lo 2
World 1
- 停止Hadoop进程
停止命令只需要在node01上操作
可以使用分别停止HDFS和YARN
stop-dfs.sh
stop-yarn.sh
或者使用以下命令停止HDFS和YARN
stop-all.sh
使用jps命令查看
jps
至此Hadoop完全分布式搭建完成