1、环境介绍
linux系统:CentOS 7.0 (64位)
内存:4G
Hadoop版本:2.7.0(仅供学习使用,暂不建议生产使用)
面向人群:Hadoop初学者
2、Hadoop集群官方文档
http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/ClusterSetup.html
3、Hadoop基础环境搭建
详见:http://blog.csdn.net/hyx1990/article/details/50170485
4、Hadoop集群结构说明
4.1 集群结构
IP | 主机名 | Hadoop角色 | Hadoop jps结果 |
---|---|---|---|
192.168.1.130 | hadoop01 | master | NamerNode/ResourceManager |
192.168.1.131 | hadoop02 | slaves | DataNode/NodeManager/SecondaryNameNode |
192.168.1.132 | hadoop03 | slaves | DataNode/NodeManager |
4.2 hosts文件配置
$ vi /etc/hosts
192.168.1.130 hadoop01
192.168.1.131 hadoop02
192.168.1.132 hadoop03
5、Hadoop集群配置
Hadoop需要通过SSH来启动Slave列表中主机的Hadoop守护进程,对于分布式,Hadoop会依次启动/etc/hadoop/savle文件中配置的主机进程。下面的所有操作都在hadoop用户下执行。
5.1、配置SSH免密码登录:
登陆到hadoop01,并在hadoop用户的home目录下执行以下命令:
$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
(注解:ssh-keygen表示生成密钥;-t指定密钥类型;-P 提供密语;-f生成的密钥文件)
其中:~表示当前目录,此处为/home/hadoop,”单引号之间没有空格。执行命令后,会在在/home/hadoop目录下创建.ssh目录,并在.ssh目录下生成id_dsa及id_dsa.pub 文件。这是SSH的一对私钥和公钥。
把id_dsa.pub(公钥)追加到授权的key中,并修改key的权限
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
将hadoop01的.ssh目录拷贝到hadoop02、hadoop03,并验证是否可以免密码登陆,第一次可能需要输入密码:
[hadoop01@master .ssh]$ ssh hadoop02
Last login: Sat Dec 20 14:53:48 2014 from 192.168.1.130
出现这样的信息,表示SSH配置成功。
注:上述免密码登录是为了方便操作,直接复制.ssh目录,所以三台机子私钥和公钥都一样,从而实现面密码登录;如果三台机器分别生成一对私钥和公钥,则需要将三台机子的公钥分别追加到每台机器的授权key中,并修改key权限。
5.2、Hadoop分布式集群配置:
Hadoop的分布式安装过程非常简单,只需要将Hadoop安装包解压到指定的目录就可以了,接下来对Hadoop的主要配置文件进行配置。
将Hadoop安装包解压到/hadoop 目录下:
$tar –zxvf hadoop-2.7.0.tar.gz -C /hadoop
然后针对/hadoop/hadoop-2.7.0/etc/hadoop目录下几个主要文件进行配置:
hadoop-env.sh、yarn-env.sh 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves
5.2.1、配置hadoop-env.sh
编辑hadoop-env.sh,找到JAVA_HOME指定JDK的安装配置
$vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
5.2.2、配置yarn-env.sh
编辑yarn-env.sh,找到JAVA_HOME指定JDK的安装配置
$vi yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
5.2.3、配置core-site.xml
$vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<!--hadoop01为主机名-->
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hadoop/tmp</value>
<description>Abase for othertemporary directories.</description>
</property>
</configuration>
5.2.4、配置hdfs-site.xml
Hadoop中的HDFS配置,主要配置备份方式,及NameNode、DataNode、NameSecondary存储地址。
$vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:/data/hadoop/dfs/namesecondary</value>
</property>
</configuration>
5.2.5、配置mapred-site.xml
Hadoop的MapReduce框架配置,配置MapReduce框架名称
$vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
</configuration>
5.2.6、配置yarn-site.xml
$vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
</configuration>
5.2.7、配置slaves节点列表
对于分布式安装,该文件中需要配置从节点机器名。
$vi slaves
hadoop02
hadoop03
(注解:slaves节点配置列表,伪分布式配置为:localhost)
5.2.8、配置Hadoop环境变量
这是一个可选步骤,为了方便执行Hadoop命令,可以在hadoop用户的环境变量中添加Hadoop环境变量。切换到hadoop用户的home目录,编辑.bash_profile文件,添加以下内容:
$vi .bash_profile
export HADOOP_HOME=/hadoop/hadoop-2.7.0
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$HADOOP_HOME/bin:$PATH
使用source命令,使其立即生效:source .bash_profile,到此,整个Hadoop伪分布式安装完毕,接下来就可以格式HDFS文件系统,并启动Hadoop系统。
5.3、格式化hdfs文件系统
在启动Hadoop系统之前,需要格式化Hadoop的HDFS文件系统。注意,只有首次启动Hadoop系统时,才需要格式化HDFS文件系统,执行hdfs命令格式HDFS文件系统:
$hdfs namenode –format
出现以下信息,说明格式化HDFS文件系统成功:
14/12/21 14:25:34 INFO util.ExitUtil: Exiting with status 0
14/12/21 14:25:34 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop01/192.168.10.1
************************************************************/
5.4、启动Hadoop系统
Hadoop安装目录的sbin目录下,封装了启动Hadoop系统的脚本。那么就进入安装Hadoop安装目录的sbin目录,启动Hadoop,验证是否安装成功!
5.4.1、启动HDFS文件系统:
$ cd /hadoop/hadoop-2.7.0/sbin/
$ ./start-dfs.sh
如果没报任何错误,则使用java的jps命令,在Master(hadoop01)中查看HDFS文件系统是否启动成功!
$ jps
7049 Jps
6504 NameNode
在salve(hadoop02)中查看SecondaryNameNode是否启动成功:
$ jps
7659 DataNode
7876 SecondaryNameNode
7348 Jps
5.4.2、启动YARN资源管理器
$ cd /hadoop/hadoop-2.7.0/sbin/
$ ./start-yarn.sh
如果没报任何错误,则使用java的jps命令,在Master(hadoop01)查看YARN资源管理器是否启动成功!
$ jps
7303 Jps
6504 NameNode
7108 ResourceManager
在salve(hadoop02)通过jps命令查看:
$ jps
7659 DataNode
7876 SecondaryNameNode
7348 Jps
3691 NodeManager
在salve(hadoop03)通过jps命令查看:
$ jps
4619 DataNode
3261 Jps
3725 NodeManager
细心的朋友可能已经发现Master节点多了一个ResourceManager进程。
这时,打开浏览器,输入:
http://192.168.1.130:50070/
如果能够查看信息说明Hadoop安装成功了
也可以使用./start-all.sh脚本启动Hadoop系统,start-all.sh脚本封装了start-dfs.sh脚本和start-yarn.sh脚本。