CentOS 6.3 x86_64安装与配置Hadoop-1.0
一、集群部署介绍
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通。
机器名称 | IP地址 |
Master | 192.168.1.21 |
Slave1 | 192.168.1.22 |
Slave2 | 192.168.1.23 |
Slave3 | 192.168.1.24 |
四个节点上均是CentOS6.3系统,并且有一个相同的用户hadoop。Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个备用Master机器,以防止主Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器。
二、环境配置
对四台机器都需要做相同的配置
1,需要用主机名来通信,没dns则修改此文件,以达到同样的效果
#vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.21 master
192.168.1.22 slave1
192.168.1.23 slave2
192.168.1.24 slave3
2,安装JDK
# rpm -vih jdk-7u21-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
Localedata.jar...
#ln -s /usr/java/jdk1.7.0_21/ /usr/java/jdk
#vim /etc/profile
JAVA_HOME=/usr/java/jdk
PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
3,利用hadoop普通用户来运行hadoop,增强其安全性
# useradd hadoop
#echo "bingodeng" | passwd --stdin hadoop
4,配置hadoop
# tar xf hadoop-1.0.3.16.tar.gz -C /usr/local/
#mkdir /usr/local/hadoop-1.0.3.16.tar.gz/tmp
#ln -sv /usr/local/hadoop-1.0.3.16 /usr/local/hadoop
# chown -R hadoop:hadoop /usr/local/hadoop-1.0.3.16
#chown -R hadoop:hadoop /usr/local/hadoop
添加hadoop命令到环境变量中
#vim /etc/profile.d/hadoop.sh 新建hadoop.sh文件
HADOOP_PREFIX=/usr/local/hadoop
PATH=$HADOOP_PREFIX/bin:$PATH
export HADOOP_PREFIX PATH
验证hadoop命令
[root@master ~]# su - hadoop
[hadoop@master ~]$ hadoop version
Hadoop 1.0.3.16
Subversion git://localhost.localdomain/ on branch hdp-hadoop-1.0.3.16 -r 6cbf3791d67a1c726ce81927045e54eb1f2e3a95
Compiled by jenkins on Mon Oct 1 06:49:26 PDT 2012
From source with checksum d351ec52aec40ae43fb833c8cc54a6c5
(1)Hadoop的配置文件解释
(1)Hadoop的配置文件解释
hadoop-env.sh: 用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoop的JVM指定特定的选项、指定日志文件所在的目录路径以及master和slave文件的位置等;
core-site.xml: 用于定义系统级别的参数,它作用于全部进程及客户端,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置;
hdfs-site.xml: HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置;
mapred-site.xml:mapreduce的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置;
masters: hadoop的secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNode和JobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode;
slaves:Hadoop集群的slave(datanode)和tasktracker的主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和taskTracker进程;
Hadoop-metrics2.properties:控制metrics在hadoop上如何发布属性
Log4j.properties:系统日志文件、namenode审计日志、tarsktracker子进程的任务日志属性
(2)修改hadoop-env.sh
# cd /usr/local/hadoop-1.0.3.16/
#vim conf/hadoop-env.sh 在最后添加这两行
# set java environment
export JAVA_HOME=/usr/java/jdk
(3)修改core-site.xml
#vim conf/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.21:9000</value>
</property>
</configuration>
注释:
hadoop.tmp.dir属性用于定义Hadoop的临时目录,其默认为/tmp/hadoop-${username}。HDFS进程的许多目录默认都在此目录中,本示例将其定义到了/usr/local/hadoop/tmp目录,需要注意的是,要保证运行Hadoop进程的用户对其具有全部访问权限。
fs.default.name属性用于定义HDFS的名称节点和其默认的文件系统,其值是一个URI,即NameNode的RPC服务器监听的地址(可以是主机名)和端口(默认为8020)。其默认值为file:///,即本地文件系统。
(4)修改hdfs-site.xml文件
#vim conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
注释:
HDFS集群进程有许多属性可以定义其工作路,
dfs.name.dir属性定义的HDFS元数据持久存储路径默认为${hadoop.tmp.dir}/dfs/name、dfs.data.dir属性定义的DataNode用于存储数据块的目录路径默认为${hadoop.tmp.dir}/dfs/data、fs.checkpoint.dir属性定义的SecondaryNameNode用于存储检查点文件的目录默认为${hadoop.tmp.dir}/dfs/namesecondary。
dfs.replication属性定义保存副本的数量,默认是保存3份。
(5)修改mapred-site.xml文件
#vim conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.1.21:9001</value>
</property>
</configuration>
(6)编辑masters文件
masters用于指定辅助名称节点(SecondaryNameNode)的主机名或主机地址
#vim conf/masters 改成ip或主机名,不过最好改成ip
192.168.1.21
(7)编辑slaves文件,这个文件只需在master主机上编辑就行
用于指定各从服务器(TaskTracker或DataNode)的主机名或主机地址
#vim conf/slaves 改成ip或主机名,不过最好改成ip
192.168.1.22
192.168.1.23
192.168.1.24