ubuntu14.04搭建Hadoop2.9.0伪分布式环境

时间:2022-10-07 06:28:34

本文主要参考 给力星的博文——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. 开启NameNodeDataNode守护进程

$ 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

12步替代

$ 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

 

 

以上