[关闭]
@changedi 2016-05-04T07:08:17.000000Z 字数 2687 阅读 2700

Hadoop的单机安装

大数据 Hadoop



原文:http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-common/SingleCluster.html

提前准备

支持的平台

GNU/Linux 和Windows都是支持的,Hadoop已经在2000台机器的集群上做过展示。

Linux环境下需要的软件:

Java™ 一定要安装
ssh一定要安装并且sshd进程必须run,用来管理远程的Hadoop守护进程。

安装

以 Ubuntu Linux 为例:

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

下载

从Apache Download Mirrors下载一个Hadoop的发行版。

准备安装

解压Hadoop版本。编辑etc/hadoop/hadoop-env.sh来定义如下参数:

  1. # set to the root of your Java installation
  2. export JAVA_HOME=/usr/java/latest
  3. # Assuming your installation directory is /usr/local/hadoop
  4. export HADOOP_PREFIX=/usr/local/hadoop

尝试执行如下命令:

  1. $ bin/hadoop

这通常会显示usage——hadoop使用说明的文档。

这样其实hadoop已经安装好了,接下来就是启动Hadoop集群,有几种启动模式:

  1. Local (Standalone) Mode
  2. Pseudo-Distributed Mode
  3. Fully-Distributed Mode

Standalone (本地模式)

默认情况Hadoop配置是一个非分布式的模式,也就是一个Java进程。这样的配置对于debug是非常有帮助的。

下面的例子拷贝解压后的conf目录作为输入,输出写到指定的输出目录。

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

Pseudo-Distributed(伪分布式)

Hadoop也可以在一个节点上(单台机器上)运行分布式模式,方法就是不同的daemon运行到不同的Java进程。

配置

这两个文件

etc/hadoop/core-site.xml:
  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://localhost:9000</value>
  5. </property>
  6. </configuration>
etc/hadoop/hdfs-site.xml:
  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. </configuration>

安装无密码的ssh

检查是否可以无密码的ssh到localhost:

  1. $ ssh localhost

如果不可以,执行如下命令:

  1. $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  2. $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

运行

接下来的指令可以本地运行一个Mapreduce作业。如果希望在YARN上运行,参见YARN on Single Node.

  1. 格式化文件系统:

    $ bin/hdfs namenode -format
    
  2. 启动NameNode和DataNode的进程:

    $ sbin/start-dfs.sh
    

    hadoop的守护进程日志输出到$HADOOP_LOG_DIR目录。(默认是到$HADOOP_HOME/logs).

  3. 浏览NameNode的web界面,默认是在:

    NameNode - http://localhost:50070/
    
  4. 创建HDFS的目录来执行Mapreduce作业:

    $ bin/hdfs dfs -mkdir /user
    $ bin/hdfs dfs -mkdir /user/<username>
    
  5. 拷贝输入文件到分布式文件系统:

    $ bin/hdfs dfs -put etc/hadoop input
    
  6. 运行一些已经提供的示例程序:

    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output 'dfs[a-z.]+'
    
  7. 检查输出文件:
    把分布式系统里的输出文件拷贝到本地文件系统:

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

    或者直接在分布式文件系统查看输出文件:

    $ bin/hdfs dfs -cat output/*
    
  8. 做完测试后,结束进程:

    $ sbin/stop-dfs.sh
    

单机运行YARN

你也可以通过设置一些参数来启动ResourceManager和NodeManager进程来运行Mapreduce作业在YARN的伪分布式环境下。

下面的步骤假设上面提到的1-4步已经执行过了。

  1. 配置参数:

    etc/hadoop/mapred-site.xml:
    
    1. <configuration>
    2. <property>
    3. <name>mapreduce.framework.name</name>
    4. <value>yarn</value>
    5. </property>
    6. </configuration>
    etc/hadoop/yarn-site.xml:
    
    1. <configuration>
    2. <property>
    3. <name>yarn.nodemanager.aux-services</name>
    4. <value>mapreduce_shuffle</value>
    5. </property>
    6. </configuration>
  2. 启动ResourceManager和NodeManager:

    $ sbin/start-yarn.sh
    
  3. 浏览ResourceManager的web界面;默认是:

    ResourceManager - http://localhost:8088/
    
  4. 运行一个Mapreduce作业。
    当运行完成后,结束进程:

    $ sbin/stop-yarn.sh
    
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注