hadoop大数据教程 hadoop 集群安装实验

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端口:

http://10.0.0.22:50070/

resourcemanager WEB端口默认在8088:

http://10.0.0.23: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,以免出现问题。

 

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号