本文共 4518 字,大约阅读时间需要 15 分钟。
本节书摘来自华章计算机《深入理解大数据:大数据处理与编程实践》一书中的第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,在文件最后加上如下语句:JAVA_HOME=/usr/java/jdk1.6.0PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOME PATH CLASSPATH
保存退出,执行source /etc/profile使得配置文件生效。
4)执行java-version查看当前版本配置有没有生效。5)执行以下命令分别进行编译和执行,查看结果是否正确。$javac HelloWorld.java$java HelloWorld
2.3.2 创建Hadoop用户
在所有机器上建立相同的用户名,例如名为“hadoop”的用户名。这一步使用如下命令实现:#useradd –m hadoop#passwd hadoop
成功建立Hadoop用户后,输入的密码就是该用户的密码。
2.3.3 下载安装Hadoop和单机伪分布式一样,从Apache Hadoop发布页面()下载一个稳定的发布包,再解压缩到本地文件系统中。在这里采用的Hadoop版本是Hadoop-1.2.1。$tar –xzvf hadoop-1.2.1.tar.gz2.3.4 配置SSH该配置主要是为了实现在机器之间访问时免密码登录。在所有机器上建立.ssh目录,执行如下命令:$mkdir .ssh
在NameNode上生成密钥对,执行如下命令:
$ssh-keygen –t rsa
然后一直按键,就会按照默认的选项将生成的密钥对保存在.ssh/id_rsa中。接着执行如下命令:
$cd ~/.ssh$cp id_rsa.pub authorized_keys$scp authorized_keys datanode1:/home/hadoop/.ssh$scp authorized_keys datanode2:/home.hadoop/.ssh
最后进入所有机器的.ssh目录,改变authorized_keys文件的许可权限:
$chmod 644 authorized_keys
这时从NameNode向其他机器发起SSH连接,只要在第一次登录时需要输入密码,以后则不再需要输入密码。
2.3.5 配置Hadoop环境要在所有机器上配置Hadoop,首先在NameNode上进行配置,执行如下的解压缩命令:$tar –xzvf /home/hadoop/hadoop-1.2.1.tar.gz
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.xmlcore-site.xml的文档内容如下所示:hadoop.tmp.dir /tmp/hadoop/hadoop-${user.name} fs.default.name hdfs:// 192.168.1.253:9000
hdfs-site.xml的文档内容如下所示:
dfs.namenode.name.dir /home/hadoop/hadoop_dir/dfs/name dfs.datanode.data.dir f?ile:// /home/hadoop/hadoop_dir/dfs/data dfs.replication 1
mapred-site.xml的文档内容如下所示:
mapred.job.tracker 192.168.1.253:9001 mapreduce.cluster.local.dir /home/hadoop/hadoop_dir/mapred/local mapreduce.jobtracker.system.dir /home/hadoop/hadoop_dir/mapred/system
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/hadoop5.?编辑所有机器的conf/hadoop-env.sh将JAVA_HOME变量设置为各自的Java安装的根目录。至此,Hadoop已经在集群上部署完毕。如果要新加入或删除节点,仅需修改所有节点的master和slaves配置文件。2.3.6 Hadoop的运行1.?格式化HDFS文件系统在初次安装和使用Hadoop之前,需要格式化分布式文件系统HDFS,操作命令如下:$bin/hadoop namenode -format
2.?启动Hadoop环境
启动Hadoop守护进程。在NameNode上启动NameNode、JobTracker和Secondary NameNode,在datanode1和datanode2上启动DataNode和TaskTracker,并用如下jps命令检测启动情况:$bin/start-all.sh$jps
Namenode节点上启动正常结果如下所示:
$jps14730 SecondaryNameNode15099 Jps14375 NameNode14825 JobTracker
用户也可以根据自己的需要来执行如下命令:
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.sh2.3.7 运行测试程序下面用一个程序测试能否运行任务,示例程序是一个Hadoop自带的PI值的计算。第一个参数是指要运行的map的次数,第二个参数是指每个map任务取样的个数。$hadoop jar $HADOOP_HOME/hadoop-examples-0.20.205.0.jar pi2 52.3.8 查看集群状态当Hadoop启动之后,可以用jps命令查看一下它是不是正常启动。在NameNode节点上输入jps命令:$jps4706 JobTracker4582 SecondaryNameNode4278 NameNode4889 Jps
在DataNode节点上输入jps命令:
$jps4413 DataNode4853 TaskTracker4889 Jps
如果显示以上的信息,则Hadllop已表示正常启动。
转载地址:http://vzrzx.baihongyu.com/