原文出自:http://blog.anxpp.com/index.php/archives/1036/
官方教程:http://hadoop.apache.org/docs/r2.7.3/
本文基于:Ubuntu 16.04、Hadoop-2.7.3
本文参考官方文档介绍Hadoop单节点模式(本地模式及伪分布式模式)安装(Setting up a Single Node Cluster)。
单机模式是Hadoop的默认模式。当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。
此程序一般不建议安装,网络上很少这方面资料。
伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。
比如namenode,datanode,secondarynamenode,jobtracer,tasktracer这5个进程,都能在集群上看到。
Hadoop守护进程运行在一个集群上。
意思是说master上看到namenode,jobtracer,secondarynamenode可以安装在master节点,也可以单独安装。slave节点能看到datanode和tasktracer
本文介绍如何设置和配置本地模式及单节点伪分布式Hadoop安装,以便使用Hadoop MapReduce和Hadoop分布式文件系统(HDFS)快速执行简单操作。
Hadoop支持GNU / Linux作为开发和生产平台。 Hadoop已经在具有2000个节点的GNU / Linux集群上演示。
Windows也是一个受支持的平台,但本文仅适用于Linux。
ssh
java
官网:http://hadoop.apache.org/
下载:http://hadoop.apache.org/releases.html
先从官网下载响应的hadoop,然后解压:
- tar -zxvf hadoop-2.7.3.tar.gz
修改文件夹名字:
- mv hadoop-3.7.3 hadoop
配置环境变量,编辑profile文件:
- sudo gedit /etc/profile
然后在文件末尾追加如下内容:
- # hadoop
- export HADOOP_HOME=/usr/lib/java/hadoop
- export PATH=${HADOOP_HOME}/bin:$PATH
记得生效配置:
- source /etc/profile
查看是否安装成功:
- anxpp@ubuntu:~$ hadoop version
- Hadoop2.7.3
- Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
- Compiledby root on 2016-08-18T01:41Z
- Compiledwith protoc 2.5.0
- From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
- This command was run using/usr/lib/java/hadoop/share/hadoop/common/hadoop-common-2.7.3.jar
注释掉25行的#export JAVA_HOME=${JAVA_HOME},并在其后添加:
- export JAVA_HOME=/usr/lib/java/jdk1.8.0_111
现在可以输入命令测试,这里使用Hadoop/bin/hadoop:
- anxpp@ubuntu:/$ /usr/lib/java/hadoop/bin/hadoop
这时会显示hadoop脚本的使用文档。
现在就可以以三种受支持的模式之一启动了:
默认情况下,Hadoop配置为作为单个Java进程在非分布式模式下运行。这对于调试非常有用。
以下示例复制解压缩的conf目录以用作输入,然后查找并显示给定正则表达式的每个匹配项,输出写入给定的输出目录:
- $ mkdir input
- $ cp etc/hadoop/*.xml input
- $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
- $ cat output/*
Hadoop也可以在伪分布式模式下在单节点上运行,其中每个Hadoop守护程序在单独的Java进程中运行。
各项配置如下所述:
- <configuration>
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://localhost:9000</value>
- </property>
- </configuration>
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- </configuration>
首先检查ssh到本地是否需要密码:
- $ ssh localhost
如果执行需要密码,执行以下命令即可:
- $ ssh-keygen -t rsa -P ''-f ~/.ssh/id_rsa
- $ cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
- $ chmod 0600~/.ssh/authorized_keys
以下说明是在本地运行MapReduce。在YARN上执行一些操作将在后面部分介绍。
- $ /usr/lib/java/hadoop/bin/hdfs namenode -format
- $ /usr/lib/java/hadoop/sbin/start-dfs.sh
hadoop守护程序日志输出将写入$ HADOOP_LOG_DIR目录(默认为$ HADOOP_HOME / logs)
默认情况下地址为:
NameNode - http://localhost:50070/
- $ /usr/lib/java/hadoop/bin/hdfs dfs -mkdir /user
- $ /usr/lib/java/hadoop/bin/hdfs dfs -mkdir /user/<username>
- $ /usr/lib/java/hadoop/bin/hdfs dfs -put etc/hadoop input
- $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
将输出文件从分布式文件系统复制到本地文件系统并检查它们:
- $ bin/hdfs dfs -get output output
- $ cat output/*
也可以查看分布式文件系统上的输出文件:
- $ bin/hdfs dfs -cat output/*
- $ sbin/stop-dfs.sh
可以通过设置一些参数并运行ResourceManager守护程序和NodeManager守护程序,在伪分布式模式下基于YARN运行MapReduce作业。
以下操作假定上述指令的(1)〜(4)步骤已经执行。
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- </configuration>
- <configuration>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- </configuration>
- $ sbin/start-yarn.sh
默认情况下地址为:
ResourceManager - http://localhost:8088/
- $ sbin/stop-yarn.sh
该部分内容会独立一篇文章介绍,完成后此处会给出连接。