• 搭建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环境搭建有三种模式: 单机模式 伪分布模式 分布模式 因为只是自己使用而且条件也有限,所以只在这里说下前两种方式。 单机模式 默认情况下,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,默认的访问地址是: 界面如下图: 可以看到通过这个地址能够看到一些关于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 ##########

    [阅读更多...]