您的位置:首页 > 运维架构 > Linux

Hadoop(2.5.1)伪分布式环境CentOS(6.5 64位)配置

2014-10-01 23:36 716 查看
一晃六年没有写博客了,一直奋斗在技术第一线,但是时间太紧一直没空写,最近在搞Hadoop,感觉有这个必要把一些琐碎的心得分享,而且正好国庆假期使时间上有了可能。

首先感谢下面两篇文章给出的指导,本文是两者技术路线在CentOS 6.5 64位 版本下对Hadoop 2.5.1伪分布式环境的一个实践。
http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html http://xuyuanshuaaa.iteye.com/blog/1063303
至于为什么写这篇文章,主要是Hadoop 2.3之后从框架上做出了质变,所以配置与运行方式发生了很多改变。

概要与介绍上文都有介绍,这里不再赘述,直奔主题:

总体的流程如下:

1、实现ssh无密码验证配置

2、安装jdk,并配好环境变量

3、安装与配置Hadoop

4、格式化与启动

5、验证是否启动

下面开始:

一. SSH无密码验证配置

Hadoop 需要使用SSH 协议,namenode 使用SSH 协议启动 namenode 和datanode 进程,伪分布式模式数据节点和名称节点均是本身,必须配置 SSH localhost无密码验证。

以下用root用户登录仅为了方便起见。登录后,执行命令:ssh-keygen
-t rsa

[root@master ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): & 按回车默认路径 &

Created directory '/root/.ssh'. &创建/root/.ssh目录&

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

通过以上命令将在/root/.ssh/ 目录下生成id_rsa私钥和id_rsa.pub公钥。进入/root/.ssh目录在namenode节点下做如下配置:

[root@master .ssh]# cat id_rsa.pub >
authorized_keys

将id_rsa.pub写入authorized_keys,配置完毕,可通过ssh
本机IP 测试是否需要密码登录:ssh localhost

二. 环境搭建

搭建测试环境所需的软件包括:

1. JDK 1.8.2,安装文件 jdk-8u20-linux-x64.rpm (http://www.oracle.com/technetwork/java/javase/index.html)

执行rpm -i jdk-8u20-linux-x64.rpm安装JDK

然后设置JAVA_HOME等环境变量:vim /etc/profile,在其末尾增加一段:

#set java home

export JAVA_HOME=/usr/java/latest

export JRE_HOME=/usr/java/latest/jre

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

这里给出的目录/usr/java/latest是CentOS 6.5下用rpm安装JDK自动生成的,如果是其他安装办法,如手动安装,则制定实际安装的目录即可。

在vim编辑器增加以上内容后保存退出(:wq),并执行以下命令使配置生效

chmod +x /etc/profile #增加执行权限

source /etc/profile #使其生效

配置完毕后,在命令行中输入java -version与echo $JAVA_HOME,根据提示信息可知是否设置成功。

然后vim hadoop/etc/hadoop/hadoop-env.sh 与 vim hadoop/etc/hadoop/yarn-env.sh来配置两个文件里的JAVA_HOME,后者是新版本Hadoop特有的。

2.Hadoop 2.5.1,安装文件 hadoop-2.5.1.tar.gz
(http://hadoop.apache.org/common/releases.html)

下载 hadoop-2.5.1.tar.gz,将其下载或者复制到/usr/目录下,然后使用如下命令:

cd /usr #进入"/usr"目录

tar –zxvf hadoop-2.5.1.tar.gz #解压hadoop-2.5.1.tar.gz安装包

mv
hadoop-2.5.1 hadoop #将hadoop-2.5.1文件夹重命名hadoop

rm –rf hadoop-2.5.1.tar.gz #删除安装包

然后把Hadoop的安装路径添加到"/etc/profile"中,将以下语句添加到末尾,并使其有效:

# set hadoop path

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

请注意这里安装的2.5.1版本,2.*版本较1.*版本改动很大,主要是用Hadoop MapReduceV2(Yarn) 框架代替了一代的架构,其中JobTracker 和 TaskTracker 不见了,取而代之的是 ResourceManager, ApplicationMaster
与 NodeManager 三个部分,而具体的配置文件位置与内容也都有了相应变化,具体的可参考文献:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

安装完之后进行配置,首先所有的配置文件从上一版本的hadoop/conf换成了hadoop/etc/hadoop,在hadoop目录下,执行vim etc/hadoop/core-site.xml,将其配置为:

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!--file system properties-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://你的ip:9000</value>
</property>
</configuration>
然后执行vim etc/hadoop/hdfs-site.xml进行第二项配置:

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
请注意上述路径都需要自己手动用mkdir创建,具体位置也可以自己选择,其中dfs.replication的值建议配置为与分布式 cluster 中实际的 DataNode 主机数一致,在这里由于是伪分布式环境所以设置其为1。
上述配置也可参考:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation

接下来执行vim etc/hadoop/mapred-site.xml配置其使用
Yarn 框架执行 map-reduce 处理程序,内容如下:

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>Yarn</value>

</property>

</configuration>

最后执行vim
etc/hadoop/yarn-site.xml对yarn进行配置,其内容如下:

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>Yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>Yarn.resourcemanager.address</name>
<value>你的ip:18040</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>Yarn.resourcemanager.scheduler.address</name>
<value>你的ip:18030</value>
</property>
<property>
<description>The address of the RM web application.</description>
<name>Yarn.resourcemanager.webapp.address</name>
<value>你的ip:18088</value>
</property>
<property>
<description>The address of the resource tracker interface.</description>
<name>Yarn.resourcemanager.resource-tracker.address</name>
<value>你的ip:8025</value>
</property>
</configuration>
然后格式化:hadoop/bin/hadoop namenode -format,看到命令倒数第三行Storage directory * has been successfully formatted. 则说明格式化成功。
新版本中启动脚本也从hadoop/bin/start-all.sh变为了hadoop/sbin/start-dfs.sh与hadoop/sbin/start-yarn.sh。

执行start-dfs.sh来启动dfs:

# sbin/start-dfs.sh
14/10/01 22:35:21 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [机器名]
intelbang: starting namenode, logging to /usr/hadoop/logs/hadoop-root-namenode-机器名.out
机器ip: starting datanode, logging to /usr/hadoop/logs/hadoop-root-datanode-机器名.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/hadoop/logs/hadoop-root-secondarynamenode-机器名.out
14/10/01 22:35:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
这里有个warning:Unable to load native-hadoop library for your platform... 不知为啥出现的,求达人指点!
然后执行start-yarn.sh来启动yarn:

# sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/hadoop/logs/yarn-root-resourcemanager-intelbang.out
机器ip: starting nodemanager, logging to /usr/hadoop/logs/yarn-root-nodemanager-intelbang.out
至此两者均启动成功,可以访问http://机器ip:50070来获得dfs的运行现状,http://机器ip:8088来获得resource manager的运行现状,全部Hadoop上的应用情况一目了然。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: