共计 3949 个字符,预计需要花费 10 分钟才能阅读完成。
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://www.linuxidc.com/Linux/2017-11/148344.htm 以及 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 -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 过程
包含“dfs”的各个文件中的行数及每行内容。
测试完成,停止 hadoop 集群。先关闭 yarn,后停止 hdfs。
hadoop 自带脚本为 stop-yarn.sh 及 stop-dfs.sh。
Thanks!
Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署 http://www.linuxidc.com/Linux/2017-04/143095.htm
Hadoop2.7.2 集群搭建详解(高可用)http://www.linuxidc.com/Linux/2017-03/142052.htm
使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm
Ubuntu 14.04 下 Hadoop 集群安装 http://www.linuxidc.com/Linux/2017-02/140783.htm
CentOS 6.7 安装 Hadoop 2.7.2 http://www.linuxidc.com/Linux/2017-08/146232.htm
Ubuntu 16.04 上构建分布式 Hadoop-2.7.3 集群 http://www.linuxidc.com/Linux/2017-07/145503.htm
CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 http://www.linuxidc.com/Linux/2017-09/146864.htm
CentOS 7 下 Hadoop 2.6.4 分布式集群环境搭建 http://www.linuxidc.com/Linux/2017-06/144932.htm
Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程 http://www.linuxidc.com/Linux/2017-06/144926.htm
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/148345.htm