您的位置:首页 > 运维架构

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

2016-07-11 18:06 447 查看

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文件如下:



把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://blog.csdn.net/triggerboom/article/details/8446467 以及hadoop 官方wiki友情提醒:http://wiki.apache.org/hadoop/ConnectionRefused

配置ssh无密码连接:

由于hadoop 是集群资源管理系统,涉及到集群中各台机器相互之间数据传输等通信过程,因此需要处理好机器之间的数据通信安全问题。在linux环境下,最常用的通信处理手段就是ssh服务。

下面以ssh的连接过程为例,简单说一下ssh的原理:



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

那么有没有这个固定文件呢?没错,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 目录情况:



在.bashrc文件末尾添加环境变量。

vim  ~/.bashrc


加上:



其中 lilelr 为我的linux用户名。

立刻使环境变量生效:

source ~/.bashrc


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

配置hadoop相关参数:

进入到配置目录

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


修改 hadooop-env.sh 文件,更改JAVA_HOME路径。



修改 core-site.xml



修改 hdfs-site.xml



修改 mapred-site.xml



修改 yarn-site.xml



修改 slaves,添加slave1和slave2名。



上述配置修改完之后,进入到~/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


格式化无误的话,即可看到下图的输出信息提示。



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启动成功。





在slave1 节点上执行jps命令,观察到有NodeManager 和DataNode进程。



以hadoop自带的example jar为例测试。此测试程序目的是找出hadoop etc目录下文件中

包含 “dfs”的各个文件中的行数及每行内容。

为了便于重复测试,同样,我把测试命令写成了脚本,命名为testhadoop.sh,并把它放在~/hadoop/script目录中,其内容如下。

#!/bin/bash

hdfs dfs -rm -r  /user/lilelr

hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/lilelr
hdfs dfs -mkdir /user/lilelr/input                                                                                                                                                                                                            # hdfs dfs -mkdir /user/lilelr/output
hdfs dfs -put /home/lemaker/open-source/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /user/lilelr/input                                                                                                                                              hadoop jar /home/lemaker/open-source/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep /user/lilelr/input /user/lilelr/output 'dfs[a-z.]+'
hdfs dfs -cat /user/lilelr/output/*


执行testhadoop.sh脚本,输出结果如下。

map 和reduce过程



包含 “dfs”的各个文件中的行数及每行内容。



测试完成,停止hadoop集群。先关闭yarn,后停止hdfs。

hadoop自带脚本为stop-yarn.sh及stop-dfs.sh。



Thanks!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop ubuntu