北京尚学堂提供
1、集群部署介绍
1.1 Hadoop简介
Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台。以
Hadoop 分布式文件系统( HDFS , Hadoop Distributed Filesystem
)和
MapReduce ( Google MapReduce
的开源实现)为 核心 的 Hadoop 为用户
提供了系统底层细节透明的分布式基础架构。
对于 Hadoop 的集群来讲,可以分成两大类角色:
Master 和 Salve 。一个 HDFS 集
群是由一个 NameNode 和若干个 DataNode 组成的。其中 NameNode 作为主服务器,
管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的
DataNode 管理存储
的数据。MapReduce 框架是由一个单独运行在主节点上的
JobTracker 和运行在每个集群
从节点的 TaskTracker 共同组成的。主节点负责调度构成一个作业的所有任务,这些任务
分布在不同的从节点上。 主节点监控它们的执行情况, 并且重新执行之前的失败任务; 从节
点仅负责由主节点指派的任务。 当一个 Job 被提交时, JobTracker 接收到提交作业和配置
信息之后,就会将配置信息等分发给从节点,同时调度任务并监控
TaskTracker 的执行。
从上面的介绍可以看出, HDFS 和 MapReduce 共同组成了 Hadoop 分布式系统体系
结构的核心。 HDFS 在集群上实现 分布式文件系统 ,MapReduce 在集群上实现了 分布式计
算和 任务处理 。 HDFS 在 MapReduce 任务处理过程中提供了文件操作和存储等支持,
MapReduce 在 HDFS 的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二
者相互作用,完成了 Hadoop 分布式集群的主要任务。
1.2 环境说明
集群中包括 4 个节点:1 个 Master ,3 个 Salve ,节点之间局域网连接, 可以相互 ping
通,具体集群信息可以查看 " Hadoop 集群(第 2 期) " 。节点 IP 地址分布如下:
机器名称
IP 地址
Master.Hadoop
192http://www.bjsxt.com/html/cloud/
.168.1.2
Salve1.Hadoop
192.168.1.3
Salve2.Hadoop
192.168.1.4
Salve3.Hadoop
192.168.1.5
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上
四个节点上均是 CentOS6.0 系统,并且有一个相同的用户
hadoop 。 Master 机器主
要配置 NameNode 和 JobTracker 的角色, 负责总管分布式数据和分解任务的执行;
3 个
Salve 机器配置 DataNode 和 TaskTracker 的角色,负责分布式数据存储以及任务的执行。
其实应该还应该有 1 个 Master 机器,用来作为 备用 ,以防止 Master 服务器 宕机 ,还有一
个备用马上启用。后续经验积累一定阶段后
补上 一台备用 Master 机器。
1.3 网络配置
Hadoop 集群要按照 1.2 小节 表格所示进行配置,我们在 " Hadoop 集群(第 1 期) "
的 CentOS6.0 安装过程就按照提前规划好的主机名进行安装和配置。
如果实验室后来人在
安装系统时,没有配置好,不要紧, 没有必要重新安装, 在安装完系统之后仍然可以根据后
来的规划对机器的主机名进行修改。
下面的例子我们将以 Master 机器为例,即主机名为 "Master.Hadoop" , IP 为
"192.168.1.2" 进行一些主机名配置的相关操作。 其他的 Slave 机器以此为依据进行修改。
1)查看当前机器名称
用下面命令进行显示机器名称,如果跟规划的不一致,要按照下面进行修改。
hostname
上图中,用 "hostname" 查 "Master" 机器的名字为 "Master.Hadoop" ,与我们预先规
划的一致。
2)修改当前机器名称
假定 我们发现我们的机器的主机名不是我们想要的,通过对
" /etc/sysconfig/network
" 文件修改其中 "HOSTNAME "后面的值, 改成我们规划的名称。
这个 "/etc/sysconfig/network
"文件是定义 hostname 和是否利用网络的不接触网
络设备的对系统全体定义的文件。
设定形式 :设定值 = 值
"/etc/sysconfig/network"
的 设定项目 如下:
NETWORKING 是否利用网络
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上
GATEWAY 默认网关
IPGATEWAYDEV 默认网关的接口名
HOSTNAME 主机名
DOMAIN 域名
用下面命令进行修改当前机器的主机名(
备注: 修改系统文件一般用 root 用户)
vim /etc/sysconfig/network
通过上面的命令我们从 "/etc/sysconfig/network"
中找到 "HOSTNAME" 进行修改,
查看内容如下:
3 )修改当前机器 IP
假定 我们的机器连 IP 在当时安装机器时都没有配置好, 那此时我们需要对 " ifcfg-eth0
"
文件进行配置,该文件位于 " /etc/sysconfig/network-scripts
" 文件夹下。
在这个目录下面, 存放的是网络接口 (网卡) 的制御脚本文件 (控制文件) ,ifcfg- eth0
是默认的第一个网络接口, 如果机器中有多个网络接口, 那么名字就将依此类推 ifcfg-eth1 ,
ifcfg-eth2 , ifcfg- eth3 , ……。
这里面的文件是相当重要的,涉及到网络能否正常工作。
设定形式:设定值 = 值
设定项目项目如下:
DEVICE 接口名(设备 , 网卡)
BOOTPROTO IP 的配置方法( static: 固定 IP , dhcpHCP , none: 手动)
HWADDR MAC 地址
ONBOOT 系统启动的时候网络接口是否有效(
yes/no )
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上
TYPE 网络类型(通常是 Ethemet )
NETMASK 网络掩码
IPADDR IP 地址
IPV6INIT IPV6 是否有效( yes/no )
GATEWAY 默认网关 IP 地址
查看 "/etc/sysconfig/network-scripts/ifcfg-eth0"
内容,如果 IP 不复核,就行修改。
如果上图中 IP 与规划不相符,用下面命令进行修改:
vim /etc/sysconfig/network-scripts/ifcgf-eth0
修改完之后可以用 "ifconfig" 进行查看。
4)配置 hosts 文件( 必须 )
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上
"/etc/hosts
" 这个文件是用来配置主机将用的
DNS 服务器信息,是记载 LAN 内接续
的各主机的对应 [HostName 和 IP] 用的。当用户在进行网络连接时,首先查找该文件,寻
找对应主机名(或域名)对应的
IP 地址。
我们要测试两台机器之间知否连通, 一般用 "ping 机器的 IP" ,如果想用 "ping 机器的
主机名 "发现找不见该名称的机器,解决的办法就是修改
" /etc/hosts
"这个文件,通过把
LAN 内的各主机的 IP 地址和 HostName 的 一一对应 写入这个文件的时候,就可以解决问
题。
例如:机器为 "Master.Hadoop:192.168.1.2"
对机器为
"Salve1.Hadoop:192.168.1.3"
用命令 "ping" 记性连接测试。测试结果如下:
从上图中的值,直接对 IP 地址进行测试,能够 ping 通,但是对主机名进行测试,发
现没有 ping 通,提示 "unknown host —— 未知主机 ",这时查看 "Master.Hadoop" 的
"/etc/hosts" 文件内容。
发现里面没有 "192.168.1.3 Slave1.Hadoop"
内容,故而本机器是无法对机器的主机
名为 "Slave1.Hadoop"
解析。
在进行 Hadoop 集群 配置中, 需要在 "/etc/hosts" 文件中添加集群中所有机器的 IP 与
主机名,这样 Master 与所有的 Slave 机器之间不仅可以通过 IP 进行通信,而且还可以通
过主机名进行通信。所以在所有的机器上的
"/etc/hosts" 文件 末尾 中都要添加如下内容:
192.168.1.2 Master.Hadoop
192.168.1.3 Slave1.Hadoop
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上
192.168.1.4 Slave2.Hadoop
192.168.1.5 Slave3.Hadoop
用以下命令进行添加:
vim /etc/hosts
添加结果如下:
现在我们在进行对机器为 "Slave1.Hadoop" 的主机名进行 ping 通测试,看是否能测
试成功。
从上图中我们已经能用主机名进行
ping 通了,说明我们刚才添加的内容,在局域网内
能进行 DNS 解析了, 那么现在剩下的事儿就是在其余的
Slave 机器上进行相同的配置。 然
后进行测试。( 备注:当设置 SSH 无密码验证后, 可以 "scp" 进行复制, 然后把原来的 "hosts"
文件执行覆盖即可。)
1.4 所需软件
1 )JDK 软件
下载地址: http://www.oracle.com/technetwork/java/javase/index.html
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上
JDK 版本: jdk-6u31-linux-i586.bin
2 )Hadoop 软件
下载地址: http://hadoop.apache.org/common/releases.html
Hadoop 版本: hadoop-1.0.0.tar.gz
1.5 VSFTP 上传
在 "Hadoop 集群(第 3 期) " 讲了 VSFTP 的安装及配置,如果没有安装 VSFTP 可以
按照该文档进行安装。 如果安装好了, 就可以通过 FlashFXP.exe 软件把我们下载的 JDK6.0
和 Hadoop1.0 软件上传到 " Master.Hadoop:192.168.1.2
"服务器上。
刚才我们用一般用户 ( hadoop )通过 FlashFXP 软件把所需的两个软件上传了跟目下,
我们通过命令查看下一下是否已经上传了。
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上
从图中,我们的所需软件已经准备好了。
2、 SSH 无密码验证配置
Hadoop 运行过程中需要管理远端 Hadoop 守护进程,在 Hadoop 启动以后,
NameNode 是通过 SSH ( Secure Shell )来启动和停止各个 DataNode 上的各种守护进
程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,
故我们需要配置 SSH
运用无密码公钥认证的形式,这样
NameNode 使用 SSH 无密码登录并启动 DataName
进程,同样原理, DataNode 上也能使用 SSH 无密码登录到 NameNode 。
2.1 安装和启动 SSH 协议
在 "Hadoop 集群 (第 1 期) "安装 CentOS6.0 时, 我们选择了一些基本安装包, 所以
我们需要两个服务: ssh 和 rsync 已经安装了。可以通过下面命令查看结果显示如下:
rpm –qa | grep openssh
rpm –qa | grep rsync
假设 没有安装 ssh 和 rsync ,可以通过下面命令进行安装。
yum install ssh
安装 SSH 协议
yum install rsync
( rsync 是一个远程数据同步工具,可通过
LAN/WAN 快速同步多台
主机间的文件)
service sshd restart
启动服务
确保所有的服务器都安装, 上面命令执行完毕, 各台机器之间可以通过密码验证相互登。
2.2 配置 Master 无密码登录所有 Salve
1) SSH 无密码原理
Master ( NameNode | JobTracker
)作为客户端,要实现无密码公钥认证,连接到
服务器 Salve (DataNode | Tasktracker
)上时,需要在 Master 上生成一个密钥对,包
北京尚学堂 -cctv 央视网广告合作伙伴, 专业 IT 培训机构 , 口碑最好的 java 培训、,iOS 培训,android
培训,大数据培训, web 前端, 0 元入学,先就业后付款,平均就业薪水
9500 以上