Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

实验环境:

3台机器

  • Ubuntu 14.04 Server 主机名:ubuntu7 作master
  • Ubuntu 14.04 Server 主机名:ubuntu130 作slave1
  • Ubuntu 14.04 Server 主机名:ubuntu131 作slave2

配置/etc/hosts文件:

ubuntu7即master 机器上的/etc/hosts文件如下:
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
把master上hosts文件内容复制并覆盖掉slave1和salve2中的hosts文件,仅仅修改主机名即可,即在slave1的/etc/hosts文件中,把ubuntu7改为ubuntu130.
注意!!!!Ubuntu 环境下,hosts文件中,主机名千万不能与127.0.0.1 或127.0.1.1配对,一定要与对应的局域网IP配对。如上图,主机名ubuntu7 一定要与局域网IP 172.16.0.7配对。重要教训请参考 http://www.linuxidc.com/Linux/2017-11/148344.htm 以及Hadoop 官方wiki友情提醒:http://wiki.apache.org/hadoop/ConnectionRefused

配置ssh无密码连接:

由于hadoop 是集群资源管理系统,涉及到集群中各台机器相互之间数据传输等通信过程,因此需要处理好机器之间的数据通信安全问题。在linux环境下,最常用的通信处理手段就是ssh服务。
下面以ssh的连接过程为例,简单说一下ssh的原理:
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

客户端连接服务端每次都要输入密码的原因在于:服务器没有长时间保留客户端的公钥。因此如果服务器把客户端的公钥保留在一个固定的文件中,下次客户端连接时,服务器直接从这个固定文件中查取,就不需要客户端再重新发送一次了,因此就可实现无密码连接。
那么有没有这个固定文件呢?没错,ssh软件默认是.ssh目录下的authorized_keys文件

因此ssh无密码连接的关键在于,把客户端的公钥永久保存至服务器上的一个文件。
下面配置从slave1 ssh无密码连接master
slave1端

ssh-keygen //生成客户端的公私钥,一般保存在~/.ssh文件下
把slave1端的公钥上传到master端
scp ~/.ssh/id_rsa.pub lilelr@master:~

master端
在 master的~目录下,将客户端的公钥追加到authorized_keys文件下

cat id_rsa.pub >> .ssh/authorized_keys

ssh 服务重启,使新配置生效:

sudo /etc/init.d/ssh restart

ok, 此时,slave1 登录到master 就无需密码。注意!!!此时无密码连接只是单向关系,即slave1到master无需密码登录,但master 到slave1 端连接依然需要密码。怎么办?把master和slave1 的位置互换一下,重新执行上述步骤,即可实现master到slave1端的无密码登录。

配置相关环境变量:

在master节点上:
去apache官网下载 hadoop-2.7.2.tar.gz以及下载JDK 1.8.
注意!!!开源的openJdk 是执行不了jps命令的,因此若经常使用jps命令,最好下载JDK.
在~用户目录下新建文件夹hadoop。在hadoop目录中新建hdfs和script文件夹,并把hadoop 2.7.2.tar.gz解压到hadoop目录中。
将jDK 1.8 解压到/usr/lib/jvm 目录下。
~/hadoop 目录情况:
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
在.bashrc文件末尾添加环境变量。

vim  ~/.bashrc

加上:
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

其中 lilelr 为我的linux用户名。
立刻使环境变量生效:

source ~/.bashrc

上述操作在salve1和slave2节点上重复,或复制master相关文件覆盖slave下的相关文件。

配置hadoop相关参数:

进入到配置目录

cd ~/hadoop/hadoop-2.7.2/etc/hadoop

修改 hadooop-env.sh 文件,更改JAVA_HOME路径。
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
修改 core-site.xml

Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

修改 hdfs-site.xml
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
修改 mapred-site.xml
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
修改 yarn-site.xml
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
修改 slaves,添加slave1和slave2名。
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

上述配置修改完之后,进入到~/hadoop/hdfs目录,新建data、name、和tmp目录

mkdir data name tmp

最后把master上配置好的hadoop复制到slave1和slave2节点上。

scp -r ~/hadoop slave1:~
scp -r ~/hadoop slave2:~

终于成功完成安装配置了。

hdfs文件系统格式化

由于我们已经把hadoop的bin或sbin相关目录路径写入环境变量,因此下面的命令可在任意路径下执行。
master节点上,格式化文件系统:

hdfs namenode -format

格式化无误的话,即可看到下图的输出信息提示。
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

hadoop2.7.2启动测试

以下操作在master节点上进行:
一次性启动NameNode和所有DataNode的脚本为hadoop自带的start-dfs.sh(在sbin目录下)
报告文件系统状态的命令为:

hdfs dfsadmin -report

启动yarn,一次性启动ResourceManager和NodeManager的hadoop脚本为start-yarn.sh(在sbin目录下)
报告yarn节点信息的命令为:

yarn node -list

当然,既然hadoop启动都是java进程,jps命令当然也可以用来观察master机器上的hadoop进程。
为了启动方便,我把上述启动命令都写在一个脚本里面,命名为start.sh,并把它放在~/hadoop/script目录下。

vim start.sh

来看看start.sh脚本的内容:

#!/bin/bash
start-dfs.sh
hdfs dfsadmin -report
start-yarn.sh
yarn node -list
jps

在~/hadoop/script目录下,执行start.sh脚本。输出结果如下,表明hadoop启动成功。
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
在slave1 节点上执行jps命令,观察到有NodeManager 和DataNode进程。
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

以hadoop自带的example jar为例测试。此测试程序目的是找出hadoop etc目录下文件中
包含 “dfs”的各个文件中的行数及每行内容。
为了便于重复测试,同样,我把测试命令写成了脚本,命名为testhadoop.sh,并把它放在~/hadoop/script目录中,其内容如下。

#!/bin/bash
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/lilelr
hdfs dfs -put ~/hadoop/hadoop-2.7.2/etc/hadoop input
hadoop jar ~/hadoop/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
hdfs dfs -cat output/*

执行testhadoop.sh脚本,输出结果如下。
map 和reduce过程
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署
包含 “dfs”的各个文件中的行数及每行内容。
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

测试完成,停止hadoop集群。先关闭yarn,后停止hdfs。
hadoop自带脚本为stop-yarn.sh及stop-dfs.sh。
Ubuntu 14.04 Server 环境下Hadoop 2.7.2 的安装部署

Thanks!

相关推荐