随笔 - 53  文章 - 2  评论 - 1  阅读 - 25146

一、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   飞机说之代码也疯狂  阅读(1036)  评论(0编辑  收藏  举报
编辑推荐:
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
阅读排行:
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示