目录

Hadoop 2.9.1 单机与伪分布式安装

该文档翻译自 http://hadoop.apache.org/docs/r2.9.1/hadoop-project-dist/hadoop-common/SingleCluster.html

目的

该文档 阐述如何安装配置单节点的Hadoop,你可以快速开始开始使用一些简单的HadoopMapReduceHDFS的操作

环境需求

支持平台

  • GNU/Linux可以作为研发与生产的平台,Hadoop已经在2000多个GNU/Linux节点上试验过
  • Windows也可以支持,但是下面的这些步骤只是在Linux上的安装过程。Windows上的构建指导可以参考wiki page.

软件需求

Linux上安装需要的软件有:

  1. 必须安装Java™,推荐的Java版本可以从这里获取HadoopJavaVersions.
  2. 必须安装ssh,并且sshd必须运行起来。这样才能使用Hadoop的脚本来管理远端的Hadoop节点。

安装软件

如果你的集群节点没有安装这些必须的软件,你需要先安装他们

例如在Ubuntu Linux上:

1
2
$ sudo apt-get install ssh
$ sudo apt-get install rsync

软件下载

Apache Download Mirrors下载一个目前Hadoop发布的稳定版本。

准备启动Hadoop集群

解压下载的Hadoop发布版本,编辑etc/hadoop/hadoop-env.sh修改一些参数

1
2
# 设置为你的JDK安装路径
export JAVA_HOME=/usr/java/latest

执行下面的命令

1
$ bin/hadoop

这会显示这个hadoop脚本的使用文档说明

现在你可以准备几种方式来启动你的Hadoop集群了

单机模式

默认情况下,Hadoop被配置为非分布式模式的独立的Java进程,这对调测非常有用。

下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录

1
2
3
4
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep input output 'dfs[a-z.]+'
$ cat output/*

伪分布式模式

Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。

配置

使用如下的 etc/hadoop/core-site.xml:

1
2
3
4
5
6
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml

1
2
3
4
5
6
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

免密码ssh设置

现在确认能否不输入口令就用ssh登录localhost:

1
$ ssh localhost

如果不能免密码登陆localhost,执行下面的命令

1
2
3
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

执行

下面的指令是本地执行一个MapReduce的job,如果你想在YARN上执行job,可以看 单节点上的YARN.

  1. 格式化文件系统

    1
    
    $ bin/hdfs namenode -format
    
  2. 启动守护进程NameNodeDataNode

    1
    
    $ sbin/start-dfs.sh
    

    hadoop守护进程的日志打印在$HADOOP_LOG_DIR中(默认是$HADOOP_HOME/logs

  3. 查看NameNode的web界面,默认地址是:

    • NameNode - http://localhost:50070/
  4. 创建执行MapReduce任务需要的HDFS目录

    1
    2
    
    $ bin/hdfs dfs -mkdir /user
    $ bin/hdfs dfs -mkdir /user/<username>
    
  5. 将任务需要的输入文件拷贝到分布式文件系统

    1
    
    $ bin/hdfs dfs -put etc/hadoop input
    
  6. 执行一些提供的示例

    1
    
    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep input output 'dfs[a-z.]+'
    
  7. 检查输出文件。将输出文件从分布式文件系统拷贝到本地文件系统中,打开检查

    1
    2
    
    $ bin/hdfs dfs -get output output
    $ cat output/*
    

    或者你可以直接在分布式文件系统中查看

    1
    
    $ bin/hdfs dfs -cat output/*
    
  8. 完成示例测试后,停掉守护进程

    1
    
    $ sbin/stop-dfs.sh
    

单节点上的YARN

在伪分布式模式下,你也可以配置一些参数启动ResourceManagerNodeManager,在YARN上执行MapReduce任务

下面1-4的步骤建立在上面章节提到的指令都已经执行过的前提下

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

    1
    2
    3
    4
    5
    6
    
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    

    etc/hadoop/yarn-site.xml

    1
    2
    3
    4
    5
    6
    
    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    
  2. 启动ResourceManagerNodeManager

    1
    
    $ sbin/start-yarn.sh
    
  3. 打开查看ResourceManager的web界面,默认地址是:

    • ResourceManager - http://localhost:8088/
  4. 执行一个MapReduce任务

  5. 完成后,停止守护进程

    1
    
    $ sbin/stop-yarn.sh
    

完全分布式模式

关于搭建完全分布式模式的,有实际意义的集群的资料可以在这里找到。