1.实验环境
虚拟机环境 VMBOX 5.0 ubuntu 15
java 1.80 hadoop 2.7.1
之前安装好的单机hadoop 虚拟机 *5
设置好各个主机的ip地址和主机名(/etc/hosts)
各个节点分布如下:
10.0.0.22 dbdao #NameNode
10.0.0.23 dbdao2 #ResourceManager
10.0.0.24 dbdao3 # web app proxy and MR Jobhistory server
10.0.0.25 dbdao4 #DataNode
10.0.0.26 dbdao5 #DataNode
10.0.0.27 dbdao6 #DataNode
2.先决条件:
- 安装JAVA
- 从apache镜像上下载稳定的hadoop版本
请参考单机安装hadoop(https://www.askmac.cn/archives/hadoop-single-install.htm)
3.安装:
本次试验总共是6节点的hadoop集群:
将NameNode和resource Mangager 分不同2个节点安装。DataNode为3台。还有一个节点上部署web app proxy 和 MR Jobhistory server
注意:如果虚拟机不够的话,可以将NameNode 和resourceMangager放在一起,本身也作为DataNode,这样最少需要2台虚拟机。
安装用户使用dbdao 用户:
以下操作除了配置/etc/hosts和/etc/profile。以及传递着2个文件需要sudo外,其他均使用dbdao用户操作。
useradd dbdao
su – dbdao
3.1 配置NameNode
sudo vi /etc/profile
添加:
export JAVA_HOME=/usr/local/jdk1.8.0_51
export JRE_HOME={JAVA_HOME}/jre
export CLASSPATH=${JAVA_HOME}/lib:$CLASSPATH
export PATH=$PATH:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin
export HADOOP_PREFIX=/usr/local/hadoop
export YARN_CONF_DIR=/usr/local/hadoop/conf
export HADOOP_CONF_DIR=/usr/local/hadoop/conf
将配置文件移动到conf目录,并做修改:
mkdir -p /usr/local/hadoop/conf
cp /usr/local/hadoop/etc/hadoop/* /usr/local/hadoop/conf
mkdir -p /usr/local/hadoop/conf
cp /usr/local/hadoop/etc/hadoop/* /usr/local/hadoop/conf
vi /usr/local/hadoop/conf/hdfs-site.xml
<configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<name>dfs.namenode.name.dir</name>
<value>/home/dbdao/namespace</value>
</property>
</configuration>
</configuration>
vi /usr/local/hadoop/conf/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>dbdao2:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value> dbdao2:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> dbdao2:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value> dbdao2:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value> dbdao2:8088</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value> dbdao3:9999</value>
</property>
</configuration>
vi /usr/local/hadoop/conf/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>dbdao:9001</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>dbdao3:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value> dbdao3:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
</property>
</configuration>
vi /usr/local/hadoop/conf/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://dbdao:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
vi /usr/local/hadoop/conf/slaves
dbdao4
dbdao5
dbdao6
sudo vi /etc/hosts
10.0.0.22 dbdao
10.0.0.23 dbdao2
10.0.0.24 dbdao3
10.0.0.25 dbdao4
10.0.0.26 dbdao5
10.0.0.27 dbdao6
检查/tmp中是否有残留的hadoop文件,如果有删除掉。
配置好dbdao本地的SSH信任通道(配置单机ssh信任,请参考单机安装hadoop(https://www.askmac.cn/archives/hadoop-single-install.htm))
如果是克隆虚拟机,注意克隆虚拟机后修改对应的ip地址和主机名。非克隆机器,需要将上述配置文件拷贝到其他机器的对应位置,并配置好ssh信任。
3.2 检查配置并启动
检查各个节点的配置,然后检查ssh信任:
ssh dbdao
ssh dbdao2
ssh dbdao3
ssh dbdao4
ssh dbdao5
ssh dbdao6
保证各个节点ssh 通道没问题。
各个节点的配置均一致后,在NameNode节点上,也就是dbdao(10.0.0.22) 上
格式化namespace(第一次启动时候):
$HADOOP_PREFIX/bin/hdfs namenode -format
没有任何错误,sucessfully,exit状态为0 即格式化成功。
然后namenode节点dbdao(10.0.0.22)上启动:
$HADOOP_PREFIX/sbin/start-dfs.sh
$HADOOP_PREFIX/sbin/start-dfs.sh
检查进程:
在 resourceManager dbdao2(10.0.0.23)上启动:
$HADOOP_PREFIX/sbin/start-yarn.sh
检查进程:
其他节点:
在dbdao3(10.0.0.24)机器上启动 historyserver和proxyserver:
$HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh start historyserver
$HADOOP_PREFIX/sbin/yarn-daemon.sh start proxyserver
nameNode 管理web 页面默认在 50070端口:
resourcemanager WEB端口默认在8088:
检查logs 没有问题之后开始简单的wordcount测试:
nameNode配置log日志存放在/home/dbdao/logs下,其他的节点日志在/usr/local/hadoop/logs下。
4.wordcount测试
4.1.创建目录
在hdfs上创建文件夹,在任意节点上:
/usr/local/hadoop/bin/hdfs dfs -mkdir /dbdao
/usr/local/hadoop/bin/hdfs dfs -mkdir /dbdao/test
然后将测试的文件放入hdfs中:
/usr/local/hadoop/bin/hdfs dfs -put /usr/local/hadoop/conf/* /dbdao/test
查看:
/usr/local/hadoop/bin/hadoop fs -ls /dbdao/test/
4.2提交任务:
/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /dbdao/test/ /dbdao/output
–可以看到job代号,在进行map,完成后会进行reduce
–最后会打印输出情况 。。
4.3 验证输出
从hdfs中output文件到本地文件系统:
/usr/local/hadoop/bin/hdfs dfs -get /dbdao/output output #输出到当前目录output中
cd output/
less part-r-00000
可以看到已经完成了单词数目的统计。
4.4删除文件:
/usr/local/hadoop/bin/hadoop fs -rm -r /dbdao
/usr/local/hadoop/bin/hadoop fs -ls /
4.5关闭程序:
如果实验完毕,可以用下列命令来关闭进程:
在nodename节点 dbdao:
$HADOOP_PREFIX/sbin/stop-dfs.sh
在dbdao2:
$HADOOP_PREFIX/sbin/stop-yarn.sh
在dbdao3:
$HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh stop historyserver
$HADOOP_PREFIX/sbin/yarn-daemon.sh stop proxyserver
5.添加和删除节点
5.1添加节点:
将之前的dbdao3 也作为dataNode节点加入,因为SSH和/etc/hosts,等配置均相同,所以不用再进行额外的配置修改。只需要在启动列表中加入dbdao3
然后运行启动命令即可 。
$HADOOP_PREFIX/sbin/hadoop-daemons.sh start datanode
$HADOOP_PREFIX/sbin/yarn-daemons.sh start nodemanager
5.2 删除节点
不建议在节点上直接使用stop命令关闭进程。
在mapred-site.xml(namenode节点) 中添加:
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/conf/datanode-deny.list</value>
</property>
将要关闭的主机名写入配置文件:
echo "dbdao3" >> /usr/local/hadoop/conf/datanode-deny.list
然后在namenode运行:
/usr/local/hadoop/bin/hadoop dfsadmin -refreshNodes
–可以发现节点状态过会会变成Decommissioned,表示关闭成功(namenode节点WEB)。
然后再关闭进程即可:
$HADOOP_PREFIX/sbin/hadoop-daemons.sh stop datanode
$HADOOP_PREFIX/sbin/yarn-daemons.sh stop nodemanager
如果又想将刚删除的dbdao3加入进去,只需要从原来的配置文件/usr/local/hadoop/conf/datanode-deny.list去掉相应的主机名dbdao3.然后再次执行
/usr/local/hadoop/bin/hadoop dfsadmin -refreshNodes
再到dbdao3上启动相关进程即可(如果之前没关闭进程。需要先关闭再启动)。
6.web页面观察和管理
可以看到之前完成的一些job记录(http://10.0.0.24:19888/):
通过nameNode 的web页面(http://10.0.0.22:50070/),可以看到一些节点信息,可以发现,刚增加的dbdao3也出现了:
观察resource manager的页面:
datanode节点的页面是分别在各个主机地址的8042端口(例如:http://10.0.0.25:8042/):
web页面可以很方便的获取到信息(tools中),例如日志信息,job报错信息等:
7.清理重来
如果由于修改host ip对应关系,或者其他情况重新后还是不行的话,就需要清理文件后重新启动。
清理各个节点/tmp目录下的文件和/usr/local/hadoop/tmp下的文件。
清理namenode节点中/home/dbdao/namespaces下的文件
然后重新格式化后再启动。
–类似重装了,只是文件没删除。
最后注意文件配置中最好全部使用主机名,而不使用ip,以免出现问题。
Leave a Reply