一、hadoop - 创建单个节点集群

 

目的

这篇文档描述了如何创建和配置一个单一节点的hadoop,于是你可以很快地利用Hadoop的MapReduce和Hadoop的分布式文件系统(HDFS,Hadoop Distributed File System)做一些简单的操作。

 

准备工作

支持的平台

  •  GNU/Linux 作为开发和生产平台都是支持的。hadoop在GNU/Linux上已经发布了2000个节点。
  •  Windows也是一个支持的平台,但是接下来的步骤都只对于Linux平台。

需要的软件

Linux需要的软件包括:

  1.  Java平台是必须安装的。
  2. ssh必须安装,并且sshd必须运行,因为要利用它来运行Hadoop的脚本从而管理远程hadoop守护进程

安装软件

如果你的集群没有这些软件,你就需要去安装它们。

比如,在Ubuntu Linux上:

$ sudo apt-get install ssh

$ sudo apt-get install rsync

下载

可以从Apache官方维护镜像文件来下载最新的稳定的Hadoop发布版本。

 

准备开始Hadoop集群

将下载的hadoop进行解压。编辑文件/etc/hadoop/hadoop-env.sh来定义如下一些属性:

#设置你的Java安装根目录

export JAVA_HOME=/usr/java/latest

#假设你的Hadoop安装目录为/usr/local/hadoop

export HADOOP_PREFIX=/usr/local/hadoop

尝试如下命令:

$ bin/hadoop

现在,我们既可以以下面的一种模式来开始我们的Hadoop集群:

 

本地模式

默认情况下,Hadoop是以非分布式模式进行配置的,即一个Java进程。这种情形对于debug是非常有用的。

下面的例子将解压目录下的conf目录作为输入,然后找到并展示符合正则表达式的匹配串。输出是写入到一个output的目录。

$ mkdir input

$ cp etc/hadoop/*.xml input

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'

$ cat output/*

 

伪分布模式

Hadoop能够以伪分布模式运行在一个节点上。在这个节点上,每个Hadoop守护进程就是一个独立的Java进程。

配置

 etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

设置SSH互信通信

现在检查你的ssh能否无需密码连接localhost主机:

$ ssh localhost

如果你不能没有密码连通localhost主机,那么执行下面的命令:

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

执行

下面的指令是本地运行一个MapReduce作业。

1、格式化文件系统:

$ bin/hdfs namenode -format

2、开始NameNode守护进程和DataNode守护进程:

$ sbin/start-dfs.sh

Hadoop守护进程的日志信将会输入到$HADOOP_LOG_DIR目录下(默认为$HADOOP_HOME/logs)

3、根据web接口来浏览NameNode,默认是:

 NameNode - http://localhost:50070/

4、创建HDFS目录来执行MapReduce作业:

$ bin/hdfs dfs -mkdir /user

$ bin/hdfs dfs -mkdir /user/<username>

5、将input文件拷贝到分布式文件系统中:

$ bin/hdfds dfs -put etc/hadoop input

6、运行提供的一些例子:

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.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在单个节点

你能够通过设置一些参数以伪分布式模式将MapReduce作业运行在YARN上,并且运行ResourceManager守护进程和NodeManager守护进程。

下面的指令是假设你已经完成了上面指令的1~4:

1、配置参数如下:

etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

etc/hadoo/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

2、运行ResourceManager守护进程和NodeManager守护进程:

$ sbin/start-yarn.sh

3、在web接口当中浏览ResourceManager,默认是在:

      ResourceManager - http://localhost:8088/

4、运行MapReduce作业

5、当你完成你所做的,就可以停止守护进程:

$ sbin/stop-yarn.sh

分布式操作

 关于完全分布式的相关信息,可以参考“集群创建”。

posted on 2015-05-22 17:59  飞机说之代码也疯狂  阅读(1021)  评论(0编辑  收藏  举报