hadoop1.2.1集群安装过程详解

hadoop集群安装过程详解

一,环境:

1,主机规划:

集群中包括4个节点:1Master2Salve,节点之间局域网连接,可以相互ping通。

机器名称


IP地址


hadoop01


192.168.0.31


hadoop02


192.168.0.32


hadoop03


192.168.0.33


三个节点上均是CentOS6.3 x86_64系统,并且有一个相同的用户hadoophadoop01做为master配置NameNodeJobTracker的角色,负责总管分布式数据和分解任务的执行;另外两台配置DataNodeTaskTracker的角色,负责分布式数据存储以及任务的执行。安装目录统一为/usr/local

2,软件版本:

hadoop-1.2.1.tar.gzjdk-7u25-linux-x64.rpm

二,准备工作,三台机器都需要做 ,将三台机器selinuxiptables停用。

1,安装jdk

[root@hadoop01 ~]# rpm -ivh jdk-7u25-linux-x64.rpm

[root@hadoop01 ~]# cd /usr/java/

[root@hadoop01 java]# ls

default jdk1.7.0_25 latest

[root@hadoop01 java]# ln -s jdk1.7.0_25 jdk

[root@hadoop01 java]# vim /etc/profile

163833654.png

[root@hadoop01 java]# source /etc/profile 让其java命令立即生效

[root@hadoop01 java]# java 执行java命令,如果能正常执行就表示java安装完成

2,添加一个hadoop用户,用来运行hadoop集群

164032405.png

3,做三台机器之间做双机互信,原因master通过远程启动datanode进程和tasktracker进程,如果不做双机互信,会导致每次启动集群服务都会需要密码

[root@hadoop01 ~]# vim /etc/hosts

164007967.png

hosts文件分别复制到另外两台。

4,切换到hadoop用户,对其用做双机互信,先在三台机器先执行ssh-keygen生成公钥与私钥。

164107192.png

将公钥复制到别的机器,需要对hadoop01hadoop03,都做相同的动作。

164143568.png

[hadoop@hadoop01 ~]$ ssh-copy-id -i hadoop03

[hadoop@hadoop01 ~]$ ssh-copy-id -i hadoop01

5,同步时间,三台机器启用ntpd服务,另外两台执行相同的操作

[root@hadoop01 ~]# crontab -e

*/5 * * * * /usr/sbin/ntpdate ntp.api.bz &> /dev/null

三,配置master,也就hadoop01

[root@hadoop01 ~]# tar xf hadoop-1.2.1.tar.gz -C /usr/local/

[root@hadoop01 ~]# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1

[root@hadoop01 ~]# su - hadoop

[hadoop@hadoop01 ~]$ cd /usr/local/hadoop-1.2.1/

(1)Hadoop的配置文件都存储在conf下,配置文件解释

hadoop-env.sh:用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoopJVM指定特定的选项、指定日志文件所在的目录路径以及masterslave文件的位置等;

core-site.xml: 用于定义系统级别的参数,它作用于全部进程及客户端HDFS URLHadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置;

hdfs-site.xml: HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置;

mapred-site.xmlmapreduce的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置;

masters: hadoopmaster,secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNodeJobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode;

slavesHadoop集群的slave(datanode)tasktracker的主机列表master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNodetaskTracker进程;

Hadoop-metrics2.properties:控制metricshadoop上如何发布属性

Log4j.properties:系统日志文件、namenode审计日志、tarsktracker子进程的任务日志属性

(2)修改hadoop-env.sh

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/hadoop-env.sh

164348466.png

(3)修改core-site.xml

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/core-site.xml

164416953.png


hadoop.tmp.dir属性用于定义Hadoop的临时目录,其默认为/tmp/hadoop-${username}HDFS进程的许多目录默认都在此目录中,/hadoop/tmp目录,需要注意的是,要保证运行Hadoop进程的用户对其具有全部访问权限。

fs.default.name属性用于定义HDFS的名称节点和其默认的文件系统,其值是一个URI,即NameNodeRPC服务器监听的地址(可以是主机名)和端口(默认为8020)。其默认值为file:///,即本地文件系统。

(4)修改hdfs-site.xml文件

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/hdfs-site.xml

164511467.png

dfs.name.dir属性定义的HDFS元数据持久存储路径,默认为${hadoop.tmp.dir}/dfs/name

dfs.replication属性定义保存副本的数量,默认是保存3份,由于这里只有两台slave。所以设置2。

(5)修改mapred-site.xml文件

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/mapred-site.xml

164546632.png

(6)编辑masters文件

masters用于指定辅助名称节点(SecondaryNameNode)的主机名或主机地址

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/masters

164626639.png

(7)编辑slaves文件,这个文件只需在master主机上编辑就行

用于指定各从服务器(TaskTrackerDataNode)的主机名或主机地址

164710190.png

在三台机器上分别创建两个目录:

[root@hadoop01 local]# mkdir -p /hadoop/data

[root@hadoop01 local]# mkdir -p /hadoop/tmp

[root@hadoop01 local]# chown -R hadoop:hadoop /hadoop/

[root@hadoop02 local]# mkdir -p /hadoop/data

[root@hadoop02 local]# mkdir -p /hadoop/tmp

[root@hadoop02 local]# chown -R hadoop:hadoop /hadoop/

[root@hadoop03 local]# mkdir -p /hadoop/data

[root@hadoop03 local]# mkdir -p /hadoop/tmp

[root@hadoop03 local]# chown -R hadoop:hadoop /hadoop/

(8)配置slave:将配置的hadoop整个目录复制到hadoop02haoop03

[root@hadoop01 ~]# scp -rp /usr/local/hadoop-1.2.1 hadoop02:/usr/local/

[root@hadoop01 ~]# scp -rp /usr/local/hadoop-1.2.1 hadoop03:/usr/local/

修改权限:

[root@hadoop02 ~]# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1/

[root@hadoop03 ~]# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1/

四,启动集群:

1、格式化名称节点

与普通文件系统一样,HDFS文件系统必须要先格式化,创建元数据数据结构以后才能使用。

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop namenode -format

210308927.png

如果格式化出错,一般会提示错误,就像下面,已经在提示哪个文件,第几行,根据提示检查即可。

210233291.png

[hadoop@hadoop01 ~]$ bin/start-all.sh

210154672.png

[hadoop@hadoop01 ~]$ jps 查看进程是否起来。secondarynamenodenomenodejobtracker三个进程必须都有,才正常

8549 SecondaryNameNode

8409 NameNode

8611 JobTracker

8986 Jps

或者这种方式查看集群是否正常

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop dfsadmin -report

Safe mode is ON

Configured Capacity: 37073182720 (34.53 GB)

Present Capacity: 32421658624 (30.2 GB)

DFS Remaining: 32421576704 (30.19 GB)

DFS Used: 81920 (80 KB)

DFS Used%: 0%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

------------------------------------------------

Datanodes available: 2 (2 total, 0 dead)

Name: 192.168.0.33:50010

Decommission Status : Normal

Configured Capacity: 18536591360 (17.26 GB)

DFS Used: 40960 (40 KB)

Non DFS Used: 2325061632 (2.17 GB)

DFS Remaining: 16211488768(15.1 GB)

DFS Used%: 0%

DFS Remaining%: 87.46%

Last contact: Sat Aug 31 22:25:13 CST 2013

Name: 192.168.0.32:50010

Decommission Status : Normal

Configured Capacity: 18536591360 (17.26 GB)

DFS Used: 40960 (40 KB)

Non DFS Used: 2326462464 (2.17 GB)

DFS Remaining: 16210087936(15.1 GB)

DFS Used%: 0%

DFS Remaining%: 87.45%

Last contact: Sat Aug 31 22:25:12 CST 2013

四,排错思路

1,是否是hadoop.tmp.dirdfs.data.dir属性,如果定义在别的目录需要在集群中所有节点都创建,并让hadoop用户能够访问

2,查看进程对应的端口是否有在监听。在上面配置中将namenode的端口定义9000jobtracker定义成9001

[hadoop@hadoop01 hadoop-1.2.1]$ netstat -tunlp |grep 9000

tcp 0 0 ::ffff:192.168.0.31:9000 :::* LISTEN 22709/java

[hadoop@hadoop01 hadoop-1.2.1]$ netstat -tunlp |grep 9001

tcp 0 0 ::ffff:192.168.0.31:9001 :::* LISTEN 22924/java

3,查看日志,哪个服务没起来就查看对应的日志。

4,查看集群中所有节点的时间是不是一致。

5iptableselinux是否阻止。

6/etc/hosts是否正确。



你可能感兴趣的:(centos,6.3)