天天看点

《深入理解大数据:大数据处理与编程实践》一一2.3 集群分布式Hadoop系统安装基本步骤

本节书摘来自华章计算机《深入理解大数据:大数据处理与编程实践》一书中的第2章,第2.节,作者 主 编:黄宜华(南京大学)副主编:苗凯翔(英特尔公司),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

hadoop安装时对hdfs和mapreduce的节点允许用不同的系统配置方式。在hdfs看来,节点分别为主控节点namenode和数据存储节点datanode,其中namenode只有一个,datanode可以有多个。在mapreduce看来,节点又可以分为作业主控节点jobtracker和任务执行节点tasktracker,其中jobtracker只有一个,tasktracker可以有多个。namenode和jobtracker可以部署在不同的机器上,也可以部署在同一台机器上,但一般中小规模的集群通常都把namenode和jobtracker安装配置在同一个主控服务器节点上。部署namenode和jobtracker的机器是master(主服务器),其余的机器都是slaves(从服务器)。详细的安装和配制过程如下。

2.3.1 安装和配置jdk

集群分布式hadoop系统的安装首先也需要在每台机器上安装jdk。和单机伪分布式一样,我们采用的版本为jdk-6u23-linux-x64。在集群中的每台机器上安装jdk,步骤如下:

1)将jdk-6u23-linux-x64-rpm.bin拷贝到所需要的安装目录下,如/usr/jdk。

2)执行./jdk-6u23-linux-x64-rpm.bin安装文件。

3)配置java_home以及class_path,vi进入/etc/profile,在文件最后加上如下语句:

保存退出,执行source /etc/profile使得配置文件生效。

4)执行java-version查看当前版本配置有没有生效。

5)执行以下命令分别进行编译和执行,查看结果是否正确。

2.3.2 创建hadoop用户

在所有机器上建立相同的用户名,例如名为“hadoop”的用户名。这一步使用如下命令实现:

成功建立hadoop用户后,输入的密码就是该用户的密码。

2.3.3 下载安装hadoop

$tar –xzvf hadoop-1.2.1.tar.gz

2.3.4 配置ssh

该配置主要是为了实现在机器之间访问时免密码登录。在所有机器上建立.ssh目录,执行如下命令:

在namenode上生成密钥对,执行如下命令:

然后一直按键,就会按照默认的选项将生成的密钥对保存在.ssh/id_rsa中。接着执行如下命令:

最后进入所有机器的.ssh目录,改变authorized_keys文件的许可权限:

这时从namenode向其他机器发起ssh连接,只要在第一次登录时需要输入密码,以后则不再需要输入密码。

2.3.5 配置hadoop环境

要在所有机器上配置hadoop,首先在namenode上进行配置,执行如下的解压缩命令:

hadoop的配置文件主要存放在hadoop安装目录下的conf目录中,主要有以下几个配置文件要修改:

conf/hadoop-env.sh:hadoop环境变量设置。

conf/core-site.xml:主要完成namenode的ip和端口设置。

conf/hdfs-site.xml:主要完成hdfs的数据块副本等参数设置。

conf/mapred-site.xml:主要完成jobtracker ip和端口设置。

conf/masters:完成master节点ip设置。

conf/slaves:完成slaves节点ip设置。

1.?编辑core-site.xml、hdfs-site.xml和mapred-site.xml

core-site.xml的文档内容如下所示:

hdfs-site.xml的文档内容如下所示:

mapred-site.xml的文档内容如下所示:

2.?编辑conf/masters

修改conf/masters文件为master的主机名,每个主机名一行,此处即为namenode。

3.?编辑conf/slaves

加入所有slaves的主机名,即datanode1和datanode2。

4.?把hadoop安装文件复制到其他节点上

要把hadoop安装文件复制到其他节点上,需要执行如下命令:

$scp –r hadoop-1.2.1 datanode1:/home/hadoop

$scp –r hadoop-1.2.1 datanode2:/home/hadoop

5.?编辑所有机器的conf/hadoop-env.sh

将java_home变量设置为各自的java安装的根目录。

至此,hadoop已经在集群上部署完毕。如果要新加入或删除节点,仅需修改所有节点的master和slaves配置文件。

2.3.6 hadoop的运行

1.?格式化hdfs文件系统

在初次安装和使用hadoop之前,需要格式化分布式文件系统hdfs,操作命令如下:

2.?启动hadoop环境

启动hadoop守护进程。在namenode上启动namenode、jobtracker和secondary namenode,

在datanode1和datanode2上启动datanode和tasktracker,并用如下jps命令检测启动情况:

namenode节点上启动正常结果如下所示:

用户也可以根据自己的需要来执行如下命令:

1)start-all.sh:启动所有的hadoop守护进程,包括namenode、datanode、jobtracker和tasktracker。

2)stop-all.sh:停止所有的hadoop守护进程。

3)start-mapred.sh:启动map/reduce守护进程,包括jobtracker和tasktracker。

4)stop-mapred.sh:停止map/reduce守护进程。

5)start-dfs.sh:启动hadoop dfs守护进程,包括namenode和datanode。

6)stop-dfs.sh:停止hadoop dfs守护进程。

要停止hadoop守护进程,可以使用下面的命令:

$bin/stop-all.sh

2.3.7 运行测试程序

下面用一个程序测试能否运行任务,示例程序是一个hadoop自带的pi值的计算。第一个参数是指要运行的map的次数,第二个参数是指每个map任务取样的个数。

$hadoop jar $hadoop_home/hadoop-examples-0.20.205.0.jar pi2 5

2.3.8 查看集群状态

当hadoop启动之后,可以用jps命令查看一下它是不是正常启动。在namenode节点上输入jps命令:

在datanode节点上输入jps命令:

如果显示以上的信息,则hadllop已表示正常启动。

继续阅读