Hadoop2.2配置详解

来源:互联网 发布:最近淘宝生意很差2017 编辑:程序博客网 时间:2024/05/18 15:55

原创文章,转载请注明: 转载自 镜中影的技术博客
本文链接地址: Hadoop2.2配置详解
URL:http://blog.csdn.net/linkpark1904/article/details/50790906

hadoop,著名的云计算平台,在google发布了GFS,Mapreduce,Bigtable之后,社区的大牛们在这三篇论文思想的基础上,搭建了hadoop这个大的云计算平台,其中hdfs,hadoop-mapreduce,hbase分别对应谷歌的三篇论文的具体实现。在离线应用上,hadoop平台被广泛应用,作为一个开源平台是相当不错的。

一次机缘巧合,有幸在实验室接触hadoop,利用实验室现有的硬件资源,在多机环境下搭建了hadoop平台,这里把我搭建的过程分享一下。

一、准备工作

1.1 java环境准备

由于hadoop需要运行在java环境下,所以,java环境是必须的,需要安装jdk,最好不要用linux上自带的openjdk,需要用oracle官网提供的jdk才行。

下载jdk网址为:http://www.oracle.com/technetwork/java/javase/downloads/index.html

安装方法请自行参阅官网或者网上资料。

1.2 hadoop2.2安装环境准备

Hadoop2.2 源码下载地址为:http://apache.claz.org/hadoop/common/hadoop-2.2.0/

注意其中的几个文件,凡是带有src的都是hadoop2.2的源码文件,是没有编译过的,其中的hadoop-2.2.0.tar.gz是已编译过的文件,不过,该文件是在32位操作系统下的编译文件,在64位系统下是用不了的,所以若是在64位系统下需要重新编译源码文件,生成已编译的hadoop-2.2.0.tar.gz,再开始hadoop的配置,本文不对hadoop的编译流程做赘述,怎么在64位环境下编译hadoop请自行参阅官网,或网上相关资料。另外最新的hadoop-2.4.0我也试过,编译安装方法和hadoop2.2基本一模一样。

1.3 无密码ssh登陆

Hadoop的namenode节点和datanode节点的访问均是通过ssh,所以在配置hadoop之前需要配置无密码ssh登陆。

我们这里搭建的集群包括三台机器:

192.168.1.51 Ipppc-test-51 namenode OpenSUSE 11 x64

192.168.1.52 Ippc-test-52 datanode OpenSUSE 11 x64

192.168.1.54 Ippc-test-54 datanode OpenSUSE 11 x64

1.3.1 设置localhost的无密码ssh登陆

在~目录下,会有一个隐藏的.ssh目录,配置localhost无密码ssh登陆过程如下所示:

进入.ssh文件夹ssh-keygen -t  rsa 之后一路回 车(产生秘钥)新建文件authorized_keys。把id_rsa.pub 追加到授权的 key 里面去(cat id_rsa.pub >> authorized_keys)重启 SSH 服 务命令使其生效 :service sshd restart。

验证无密码登陆是否成功

1.3.2 远程无密码ssh登陆

进入192.168.1.51的.ssh目录,将该目录下的authorized_keys追加到远程机器的.ssh目录下的authorized_keys文件中,具体做法如下:

scp authorized_keys root@192.168.1.52:~/.ssh/ authorized_keys_from_51cat authorized_keys_from_c51 >> authorized_keys

验证一下在192.168.1.51机器上的远程登陆

1.3.3 host设置(这一步也可以跳过)

可以在各个机器之间增加host设置,修改/etc/hosts文件内容如下:

192.168.1.51 ipppc-test-51.site ipppc-test-51192.168.1.52 ipppc-test-52192.168.1.54 ippc-test-54

1.3.4 防火墙问题

有关防火墙,这里可以进行设置,开放hadoop所需的端口,为了方便,我们这里将防火墙关闭了。

ipppc-test-51:~# SuSEfirewall2 stop

二、 正式配置

2.1 配置前的准备

解压hadoop到相应的用户目录下,这里我们选择root用户,所以将hadoop解压到root的根目录下。

配置之前需要在根目录下新建几个文件夹

~/dfs/name~/dfs/data~/tmp

涉及到的hadoop配置文件有7个:

~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh~/hadoop-2.2.0/etc/hadoop/yarn-env.sh~/hadoop-2.2.0/etc/hadoop/slaves~/hadoop-2.2.0/etc/hadoop/core-site.xml~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml~/hadoop-2.2.0/etc/hadoop/mapred-site.xml~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

以上配置文件个别不存在,可以复制相应的template文件获得。

2.2 配置文件的编写

在hadoop中,所以的配置xml文件均是由以下结构组成:

    <property>        <name>fs.defaultFS</name>        <value>hdfs://192.168.1.51:9000</value>    </property>

Name节点的值为需要配置的项,value为相应配置项的内容。

配置文件具体信息含义详见官网

配置文件1:hadoop-env.sh

修改JAVA_HOME的值:

# The java implementation to use.export JAVA_HOME=/usr/java/jdk1.7.0_45

配置文件2:yarn-env.sh

修改JAVA_HOME的值

# some Java parametersexport JAVA_HOME=/usr/java/jdk1.7.0_45

配置文件3:slaves(这个文件保存所有slave节点)

192.168.1.52192.168.1.54

配置文件4:core-site.xml

<configuration>    <property>        <name>fs.defaultFS</name>        <value>hdfs://192.168.1.51:9000</value>    </property>    <property>        <name>io.file.buffer.size</name>        <value>131072</value>    </property>    <property>        <name>hadoop.tmp.dir</name>        <value>file:/root/tmp</value>    </property>    <property>        <name>hadoop.proxyuser.hduser.hosts</name>        <value>*</value>    </property>    <property>        <name>hadoop.proxyuser.hduser.groups</name>        <value>*</value>    </property></configuration>

配置文件5:hdfs-site.xml

<configuration>    <property>        <name>dfs.namenode.secondary.http-address</name>        <value>192.168.1.51:9001</value>    </property>    <property>        <name>dfs.namenode.name.dir</name>        <value>file:/root/dfs/name</value>    </property>    <property>        <name>dfs.datanode.data.dir</name>        <value>file:/root/dfs/data</value>    </property>    <property>        <name>dfs.replication</name>        <value>3</value>    </property>    <property>        <name>dfs.webhdfs.enabled</name>        <value>true</value>    </property></configuration>

配置文件6:mapred-site.xml

<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property>    <property>        <name>mapreduce.jobhistory.address</name>        <value>192.168.1.51:10020</value>    </property>    <property>        <name>mapreduce.jobhistory.webapp.address</name>        <value>192.168.1.51:19888</value>    </property></configuration>

配置文件7:yarn-site.xml

<configuration>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property>    <property>        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>        <value>org.apache.hadoop.mapred.ShuffleHandler</value>    </property>    <property>        <name>yarn.resourcemanager.address</name>        <value>192.168.1.51:8032</value>    </property>    <property>        <name>yarn.resourcemanager.scheduler.address</name>        <value>192.168.1.51:8030</value>    </property>    <property>        <name>yarn.resourcemanager.resource-tracker.address</name>        <value>192.168.1.51:8031</value>    </property>    <property>        <name>yarn.resourcemanager.admin.address</name>        <value>192.168.1.51:8033</value>    </property>    <property>        <name>yarn.resourcemanager.webapp.address</name>        <value>192.168.1.51:8088</value>    </property></configuration>

2.3 复制到其他节点

这里可以写一个shell脚本来执行复制操作:我们的集群里面全部是64位操作系统,所以可以直接将192.168.1.51上的hadoop直接复制到192.168.1.52和192.168.1.54机器上

#!/bin/bashscp -r /root/dfs root@192.168.1.52:/rootscp -r /root/hadoop-2.2.0 root@192.168.1.52:/rootscp -r /root/dfs root@192.168.1.54:/rootscp -r /root/hadoop-2.2.0 root@192.168.1.54:/root

2.4 启动验证

进入安装目录:cd ~/hadoop-2.2.0/

格式化namenode: ./bin/hdfs namenode –format

启动hdfs: ./sbin/start-dfs.sh

此时在192.168.1.51上运行的进程有包括namenode secondarynamenode的进程,而在192.168.1.52 上运行的进程有包括datanode的进程.

能够证明dfs启动起来了。

给出几个简单的例子:

1.查看集群状态:./bin/hdfs dfsadmin –report

2.查看文件块组成: ./bin/hdfsfsck / -files -blocks

3.查看HDFS: http://192.168.1.51:50070

4.查看RM: http:// 192.168.1.51:8088

5.在网页上访问的截图如下所示:

hadoop网页访问

三、 可能遇到的问题

1、多次格式化namenode之后,可能datanode启动不起来。解决办法,找到配置文件hdfs-site.xml中的配置项:

    <property>        <name>dfs.datanode.data.dir</name>        <value>file:/root/dfs/data</value>    </property>

清空对应的/root/dfs/data目录的内容,重启hadoop即可

2、 启动hadoop之后无法通过网页访问,可能是防火墙拦截了50070端口,关闭防火墙再访问。

四、 hadoop的基本操作

4.1 启动和关闭

启动和关闭的执行脚本均在hadoop目录下的sbin目录下。

    Start-dfs.sh    Stop-dfs.sh

4.2 基本操作

执行hadoop shell的命令位于hadoop目录下的bin目录下:

执行文件操作的命令式hadoop

查看文件列表

./hadoop fs –ls –R /user

创建目录

./hadoop fs –mkdir /user/program

删除文件

./hadoop fs –rm /user/program/Hello.java

./haddop fs –rm –R /user

上传文件

./hadoop fs –put /root/Hello.java /usr

下载文件

./hadoop fs –get /user/Hello.java /root

查看文件内容

./hadoop fs –cat /usr/Hello.java

0 0
原创粉丝点击