共计 8673 个字符,预计需要花费 22 分钟才能阅读完成。
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 分布式集群的主要任务。
相关阅读:
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
环境说明
集群规划
集群中包括 3 个节点:1 个 Master,2 个 Slave,节点之间局域网连接,可以相互 ping 通,
机器名称 | IP地址 | 节点说明 |
icity0 | 192.16.39.141 | Master |
icity1 | 192.16.39.174 | Slave |
icity2 | 192.16.39.175 | Slave |
3 个节点上均是 RedHat6 系统,并且有一个相同的用户 hadoop。Master 机器主要配置 NameNode 和 JobTracker 的角色,负责总管分布式数据和分解任务的执行;2 个 Salve 机器配置 DataNode 和 TaskTracker 的角色,负责分布式数据存储以及任务的执行。
Linux 服务器配置信息
[root@localhost ~]# uname -a
Linux localhost.localdomain2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64GNU/Linux
[root@localhost ~]# free
total used free shared buffers cached
Mem: 2054828 1928908 125920 0 67940 95796
-/+ buffers/cache: 1765172 289656
Swap: 6291448 511492 5779956
创建 hadoop 用户
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-220.el6.x86_64#1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# free
total used free shared buffers cached
Mem: 2054828 1928908 125920 0 67940 95796
-/+ buffers/cache: 1765172 289656
Swap: 6291448 511492 5779956
1.3:创建 hadoop 用户
[root@localhost ~]# useradd hadoop
[root@localhost ~]# pwd hadoop
/root
[root@localhost ~]# passwd hadoop
Changing password for user hadoop.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is a palindrome
Retype new password:
Sorry, passwords do not match.
New password:
BAD PASSWORD: it is toosimplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
[root@localhost ~]# su – hadoop
[hadoop@localhost ~]$ pwd
/home/hadoop
这里面我设置的密码是 123456,所以比较简单,有提示,不用管,在另外两台服务器上按照这个操作创建 hadoop 用户。
修改网关
将 141 服务器的 hostname 设置为 icity0
vi /etc/sysconfig/network
依此操作将另外两台服务器修改为 icity1 和 icity2;将此文件 scp 到另外两台服务器覆盖其上面的文件也可以。
设置完此部分,重启服务器。reboot。
配置 hosts 文件
将 ip 与 hostname 对应的信息写入 hosts 文件,如图所示:
vi /etc/hosts
依此操作将另外两台服务器修改为 icity1 和 icity2;将此文件 scp 到另外两台服务器覆盖其上面的文件也可以。
配置完成后重启网卡:
service network restart
关闭防火墙
service iptables stop
建议将服务器按如下设置:
chkconfig iptables off – 关闭防火墙开机启动
chkconfig iptables –list – 查看状态
如图所示:
依此操作另外两台服务器 icity1 和 icity2;
环境测试
每台服务器上操作,如图所示:
ping icity0
ping icity1
ping icity2
配置 SSH 无密码登录
SSH 无密码原理
Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器 Salve(DataNode | Tasktracker)上时,需要在 Master 上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的 Slave 上。当 Master 通过 SSH 连接 Salve 时,Salve 就会生成一个随机数并用 Master 的公钥对随机数进行加密,并发送给 Master。Master 收到加密数之后再用私钥解密,并将解密数回传给 Slave,Slave 确认解密数无误之后就允许 Master 进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端 Master 复制到 Slave 上。
生成密钥
首先登陆 141,切换到 Hadoop 用户:
su – hadoop
执行:
ssh-keygen -t rsa
命令是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa 和 id_rsa.pub,默认存储在 ”/home/hadoop/.ssh” 目录下。
如图所示:
查看 ”/home/hadoop/” 下是否有 ”.ssh” 文件夹,且 ”.ssh” 文件下是否有两个刚生产的无密码密钥对。
依此操作另外两台服务器 icity1 和 icity2;
Icity1:
Icity2:
回到 icity0 服务器,切换到 hadoop 用户
cd /home/hadoop/.ssh
cp id_rsa.pub authorized_keys
回到 hadoop 目录,建立 sshkey 目录:
操作 icity1 和icity2服务器,将刚才生成的密钥文件 scp 到sshkey目录下面;
Icity1:
Icity2:
回到 icity0 服务器的 hadoop 用户 , 查看 sshkey 文件夹:
将 icity1 和icity2的密钥放入 authorized_keys 文件中,如图操作:
查看 authorized_keys 文件:
测试 icity0 无密码登录:
确实没有要求输入密码;
将 icity0.ssh 目录下面的 authorized_keys 文件 scp 到icity1和 icity2 .ssh 目录下面;
scp authorized_keys hadoop@icity1:/home/hadoop/.ssh/
scp authorized_keys hadoop@icity2:/home/hadoop/.ssh/
如图所示:
登录 icity1 和icity2的 hadoop 用户,查看文件:
回到 icity0 的hadoop用户,测试 icity1 和icity2的无密码登录验证:
至此,无密码验证配置完成。
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 分布式集群的主要任务。
相关阅读:
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
环境说明
集群规划
集群中包括 3 个节点:1 个 Master,2 个 Slave,节点之间局域网连接,可以相互 ping 通,
机器名称 | IP地址 | 节点说明 |
icity0 | 192.16.39.141 | Master |
icity1 | 192.16.39.174 | Slave |
icity2 | 192.16.39.175 | Slave |
3 个节点上均是 RedHat6 系统,并且有一个相同的用户 hadoop。Master 机器主要配置 NameNode 和 JobTracker 的角色,负责总管分布式数据和分解任务的执行;2 个 Salve 机器配置 DataNode 和 TaskTracker 的角色,负责分布式数据存储以及任务的执行。
Linux 服务器配置信息
[root@localhost ~]# uname -a
Linux localhost.localdomain2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64GNU/Linux
[root@localhost ~]# free
total used free shared buffers cached
Mem: 2054828 1928908 125920 0 67940 95796
-/+ buffers/cache: 1765172 289656
Swap: 6291448 511492 5779956
创建 hadoop 用户
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-220.el6.x86_64#1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# free
total used free shared buffers cached
Mem: 2054828 1928908 125920 0 67940 95796
-/+ buffers/cache: 1765172 289656
Swap: 6291448 511492 5779956
1.3:创建 hadoop 用户
[root@localhost ~]# useradd hadoop
[root@localhost ~]# pwd hadoop
/root
[root@localhost ~]# passwd hadoop
Changing password for user hadoop.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is a palindrome
Retype new password:
Sorry, passwords do not match.
New password:
BAD PASSWORD: it is toosimplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
[root@localhost ~]# su – hadoop
[hadoop@localhost ~]$ pwd
/home/hadoop
这里面我设置的密码是 123456,所以比较简单,有提示,不用管,在另外两台服务器上按照这个操作创建 hadoop 用户。
修改网关
将 141 服务器的 hostname 设置为 icity0
vi /etc/sysconfig/network
依此操作将另外两台服务器修改为 icity1 和 icity2;将此文件 scp 到另外两台服务器覆盖其上面的文件也可以。
设置完此部分,重启服务器。reboot。
软件安装
Jdk 安装配置
将 jdk1.7 上传到 icity0 服务器的 /usr/java/ 目录下面,解压后如图所示:
解压完成后,将其 scp 到 icity1 和 icity2 服务器的 /usr/java/ 目录下面,如果不存在 java 目录,先创建此 java 目录;
执行如下命令:
su – Hadoop
scp -r /usr/java/jdk1.7.0_09hadoop@icity1:/usr/java/
scp -r /usr/java/jdk1.7.0_09 hadoop@icity2:/usr/java/
由于之前已经配置了无密码加密,故无需输入密码,直接执行命令即可。
配置 jdk 环境变量
在 ictiy0 服务器的 hadoop 用户下面,
su – haoop
vi .bash_profile
输入红圈中的内容即可。
依此操作另外两台服务器 icity1 和 icity2;
使配置生效
保存并退出,执行下面命令使其配置立即生效。
source .bash_profile
依此操作另外两台服务器 icity1 和 icity2;
“配置 jdk 环境变量”和“使配置生效”可以合为一步,将 icity0 配置好的 .bash_profile 文件 scp 到icity1和 icity2 /home/haoop/ 目录下面,然后 ssh icity1 和ssh icity2上,执行
source .bash_profile 即可。
至此,jdk配置完成。
Hadoop 安装
将 hadoop1.1.2 上传到 icity0 服务器的 hadoop 用户目录下面,如图所示:
解压并重命名为 hadoop,如图所示:
tar -zxvf hadoop-1.1.2.tar.gz
mv hadoop-1.1.2 hadoop
修改 Hadoop 的配置
修改 conf/hadoop-env.sh
vi hadoop-env.sh
保存退出。
配置 conf/core-site.xml
vi core-site.xml
增加如下内容:如图所示:
配置 conf/hdfs-site.xml
vi hdfs-site.xml 增加如下内容,如图所示:
配置 conf/mapred-site.xml
vi mapred-site.xml 增加如下内容,如图所示:
配置 conf/masters
vi masters 增加如下内容,如图所示:
配置 conf/slaves
vi slaves 增加如下内容,如图所示:
至此,hadoop 配置完成。
配置 Hadoop 环境变量
切换到 icity0 服务器,切换到 hadoop 用户,
配置.bash_profile 文件,增加如下内容:
vi .bash_profile
保存退出。
使配置生效:
source .bash_profile
scp hadoop 目录和文件到 slave 节点
将 icity0 上面的 hadoop 安装目录和文件 scp 到 icity1 和 icity2 服务器上面。
scp -r hadoop hadoop@icity1:/home/hadoop/
scp -r hadoop hadoop@icity2:/home/hadoop/
scp .bash_profile 文件到 slave 节点
将 .bash_profile 配置文件 scp 到icity1和 icity2 的hadoop /home/hadoop/目录下面,然后 ssh icity1 和ssh icity2上,执行 source .bash_profile 即可。具体见图:
自此,所有配置工作完成,下面开始启动hadoop。
启动 / 停止 Hadoop 集群
启动 hadoop 集群
格式化
在 icity0 上 第一次启动 Hadoop, 必须先格式化 namenode
cd $HADOOP_HOME /bin
hadoop namenode –format
如图所示:
启动 Hadoop
cd $HADOOP_HOME/bin
./start-all.sh
如果启动过程,报错 safemode 相关的Exception
执行命令
#hadoop dfsadmin -safemode leave
然后再启动Hadoop
启动没有报错。启动完成。
停止 Hadoop
cd $HADOOP_HOME/bin
./stop-all.sh
进程检查
在 master icity0 服务器上执行 jps:存在 3 大进程:
NameNode
SecondaryNameNode
JobTracker
在 slave 上执行 jps:存在进程:
DataNode
TaskTracker
终端查看集群状态
执行命令:
hadoop dfsadmin –report
如图所示:
到此,整个 hadoop 的分布式安装完成。