搭建Hadoop运行环境

准备工作

安装JDK

JDK版本一般要求是JDK1.7。JDK1.6较新的版本也可以使用。这里使用的是JDK1.8。

官方有一个JDK与Hadoop版本对照表,可以参考一下:http://wiki.apache.org/hadoop/HadoopJavaVersions。

JDK安装完成后需要配置PATH环境变量和JAVA_HOME环境变量。

安装ssh和rsync软件

执行如下的命令安装:

下载Hadoop

Hadoop的下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/。选择需要的版本下载即可。

配置Hadoop的hadoop_env.sh文件

hadoop-env.sh文件用于配置hadoop集群特有的变量信息。在这里至少需要配置JAVA_HOME变量。解压下载的hadoop-xxx.tar.gz文件,移动到部署位置,打开etc/hadoop/hadoop-env.sh文件,添加如下的参数:

这里需要说明一下,如果是单机模式,这一行可以不用配置,但是伪分布式模式下,这一行一定需要配置。虽然可能已经正确的配置了JAVA_HOME环境变量,但是启动时还是可能会报出上述错误,从etc/hadoop/hadoop-env.sh文件关于第一行配置:export JAVA_HOME=${JAVA_HOME}的注释上来看,对于一个分布式集群,这里JAVA_HOME最好显式地指明而不要使用默认的${JAVA_HOME}。对于etc/hadoop/yarn-env.sh也是如此!

到此准备工作算是已经完成。

此外还建议将hadoop的bin和sbin目录添加到系统环境变量PATH中,这样使用起来也方便些。

环境搭建

Hadoop环境搭建有三种模式:

      1. 单机模式
      2. 伪分布模式
      3. 分布模式

因为只是自己使用而且条件也有限,所以只在这里说下前两种方式。

单机模式

默认情况下,hadoop被设置为在非分布式模式下,以单一java进程运行。也就是说完成了准备工作后我们就做好了Hadoop单机模式的搭建。单机模式的Hadoop在程序调试时是很有用的。

在下面的例子中将使用hadoop自带的示例程序做一个演示。我们使用解压后的hadoop的conf目录作为输入内容,通过hadoop中自带的示例程序筛选出符合所提供的正则表达式的内容,并进行展示。进入hadoop安装目录,执行如下脚本:

上面的代码使用hadoop安装文件中提供的示例应用,完成了在一批文本文件中查找特征文字的工作。

伪分布模式

以伪分布模式部署hadoop后,每个hadoop后台进程都会在独立的java进程上运行。

配置伪分布式hadoop需要按以下步骤来完成。

1.参数设置

配置hadoop伪分布式运行环境至少需要配置两个文件:core-site.xml和hdfs-site.xml。这两个文件位于hadoop的安装目录/etc/hadoop目录下。

core-site.xml是hadoop的核心配置文件。在core-site中至少需要配置HDFS的地址及端口号。如下是core-site.xml的配置信息:

hdfs-site.xml主要用于配置HDFS的相关属性参数。如下是hdfs-site.xml的配置信息:

hdfs-site.xml主要用于配置HDFS的相关属性参数。在这里配置了dfs.replication属性。Dfs.replication用于指定HDFS中每个Block块被复制的次数。起到数据备份的作用。在生产环境中这个属性的值一般被设置为3。这里是伪分布式环境,只有一个节点,因此将之设置为1。

此外,有的人还会考虑将hadoop的tmp目录以及hdfs的namenode和datanode对应的文件目录重置。

调整tmp目录的位置需要修改core-site.xml:

修改hdfs的namenode和datanode对应的文件目录需要修改hdfs-site.xml:

再就是日志目录的调整了。如果有修改日志目录的需要的话可以直接修改hadoop-env.sh 文件,在最前方插入如下内容:

以上配置中关于目录的参数取自我自己的开发环境,使用时要根据自己情况重新调整。

2.SSH配置

Hadoop使用ssh协议来管理远程守护进程。首先检查一下是否能使用ssh免密码登录到localhost。指令如下:

如果ssh不能免密码登录到localhost。还需要执行如下指令:

配置完成后如果是首次ssh访问本机,还需要输入yes完成确认。

运行hadoop作业

这一节的内容演示了如何在本地执行MapReduce的Job。下一节会说明如何在yarn上运行MapReduce的Job。执行MapReduce作业可以按如下的步骤。

1. 格式化名称节点

执行如下命令:

namenode主要用来存储HDFS上的文件的元数据信息。而format操作的作用就是为记录元数据做初始化准备。在单机开发环境下,系统可能会多次关闭和重启,然而上面这条命令只能执行一次。如果重复执行了,hdfs上已有的文件就会变成“黑记录”,影响hdfs的正常运行。

2.启动namenode和datanode的守护进程

执行如下命令:

Hadoop守护进程的输出日志位于$HADOOP_LOG_DIR(在hadoop-env.sh中配置)下,默认是$HADOOP_HOME/logs下。

3.访问名称节点

可以使用浏览器通过web接口访问namenode,默认的访问地址是:

界面如下图:

image

可以看到通过这个地址能够看到一些关于hdfs的信息。前面也提到过namenode中记录的就是hdfs的元数据信息。

4. 设置执行MapReduce job的hdfs目录

执行mapreduce作业如果用到了hdfs,需要先准备一些必要的目录,比如user目录:

这里的username指的是hdfs所在的系统的用户名。

5.拷贝输入文件到hdfs

执行如下命令:

命令在hdfs创建了一个新的input目录,而后将hadoop安装目录/etc/hadoop下的所有xml文件复制到hdfs上的input目录下。

6. 运行hadoop提供的示例

代码如下:

这里执行的就是单机模式中的那个程序。

7. 查看输出结果

查看输出结果有两种方式,一是将hdfs文件系统中的文件copy到本地文件系统进行查看,如下面的代码:

查看结果:

结果:

或者直接在hdfs上查看:

8.退出

在执行完成后,关闭后台进程:

在伪分布式节点上运行yarn

Hadoop2较之hadoop1的一个变化就是引入了YARN。接下来说一下如何在伪分布模式下配置YARN,并在YARN上运行MapReduce的job。在伪分布模式下配置YARN很简单,只需要修改几个配置文件,然后启动资源管理进程和节点管理进程即可。

1.配置

配置etc/hadoop/mapred-site.xml:

这里的配置说明了要使用yarn框架执行mapreduce的任务。

配置etc/hadoop/yarn-site.xml:

这里通过yarn的yarn.nodemanager.aux-services项自定义了shuffle服务。

2.启动

启动ResourceManager和NodeManager进程:

3.通过浏览器访问ResourceManager

访问地址是:

4.运行一个mapreduce作业

可以再执行一遍上面的2-7步。

5.关闭yarn

所有工作做完后,关闭yarn:

参考文档

namenode format做了什么:http://blog.csdn.net/xhh198781/article/details/6904615

hadoop native本地库问题总结:http://blog.csdn.net/ligt0610/article/details/47757013

英文原文:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html

##########


发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据