ubuntu14.04搭建Hadoop2.9.0伪分布式环境
本文主要参考 给力星的博文——Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
一些准备工作的基本步骤和步骤具体说明本文不再列出,文章中提到的“见参考”均指以上这篇博文,如有其他参考,会另外给出链接
一、创建Hadoop用户
见参考
二、更新apt
见参考
三、安装配置SSH
见参考
四、搭建Java环境
本人采用的是通过ppa源安装的方式,具体操作见:http://www.cnblogs.com/a2211009/p/4265225.html
采用这种方式时可能会出现错误error processing package oracle-java8-installer
解决方法见本人另一篇博文:http://www.cnblogs.com/VeryGoodVeryGood/p/8318105.html
通过ppa安装jdk时,会自动配置5个环境变量,包括JAVA_HOME,关于这5个环境变量的说明,详见博文:Ubuntu安装Oracle Java8以及环境变量的正确设置方法
再在~/.bashrc中添加如下环境变量
export JRE_HOME=$J2REDIR
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
让以上环境变量生效
$ source ~/.bashrc
五、安装 Hadoop
见参考
在~/.bashrc中添加如下环境变量
export HADOOP_HOME=/usr/local/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
让以上环境变量生效
$ source ~/.bashrc
六、配置Hadoop伪分布式
我下载的是2.9.0版本,配置文件在目录/usr/local/hadoop/etc/hadoop/下
hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME} #将上面的行注释掉,用下面的行替代: export JAVA_HOME=/usr/lib/jvm/java-8-oracle #这样做是避免,Hadoop配置文件中读不到$JAVA_HOME而报错
core-site.xml,详细说明见:http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-common/core-default.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Hadoop重要临时文件存放目录</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> <description>一种方案和权限决定文件系统实现的URI</description> </property> </configuration>
hdfs-site.xml,详细说明见:http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> <description>复制的块的数量</description> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> <description>DFS管理节点的本地存储路径</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> <description>DFS数据节点的本地存储路径</description> </property> </configuration>
mapred-site.xml,详细说明见:http://hadoop.apache.org/docs/r2.9.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
先重命名
$ mv mapred-site.xml.template mapred-site.xml
再配置
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <description>执行MapReduce作业时运行的框架</description> </property> </configuration>
yarn-site.xml,详细说明见:http://hadoop.apache.org/docs/r2.9.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>NodeManager的辅助服务</description> </property> </configuration>
七、启动和关闭Hadoop
0. 格式化NameNode(更改配置后才执行这一步)
hdfs namenode -format
下面步骤中运行的脚本均在目录/usr/local/hadoop/sbin/中,因为在环境变量PATH里增加了该路径,所以在运行时不必指定脚本路径
1. 开启NameNode和DataNode守护进程
$ start-dfs.sh
2. 启动YARN
$ start-yarn.sh
3. 判断是否成功启动
$ jps
若成功启动会看见6个进程,分别是:Jps、DataNode、NameNode、SecondaryNameNode、NodeManager、ResourceManager
若未配置YARN,则会看见4个进程,分别是:Jps、DataNode、NameNode、SecondaryNameNode
成功启动后,可以访问Web界面http://localhost:50070/查看NameNode和DataNode的信息以及在线查看HDFS中的文件
4. 关闭Hadoop
$ stop-dfs.sh $ stop-yarn.sh
第1、2步替代
$ start-all.sh
第4步替代
$ stop-all.sh
八、伪分布式实例
1. 在HDFS中创建用户目录
$ hdfs dfs -mkdir -p /user/hadoop
2. 创建input目录
$ hdfs dfs -mkdir input
3. 将本地文件复制到input里
$ hdfs dfs -put ./etc/hadoop/*.xml input
4. 查看文件列表
$ hdfs dfs -ls input
5. 操作
$ hdfs dfs -rm -r output #Hadoop运行程序时,输出目录不能存在,否则会提示错误 $ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
6. 查看运行结果
$ hdfs dfs -cat output/*
7. 将运行结果取回本地
$ rm -r ./output #先删除本地output目录 $ hdfs dfs -get output ./output $ cat ./output/*
8. 删除output目录
$ hdfs dfs -rm -r output $ rm -r ./output
以上