`

Apache Hadoop 简单配置及实践

 
阅读更多

Apache Hadoop 是一个分布式计算基础框架,通过它可以使用N台计算机同时处理某个复杂的计算任务。用户(应用程序)只需要定义如何将一项计算任务拆分(Map)以及如何将各个分任务的结果合并(Reduce),剩下的事情比如如何协调N台计算机一起工作,如何保证即使某一台计算机中途坏掉了也不会影响整项任务的工作等,都由 Hadoop 代劳。Hadoop 同时还可以扩展为分布式储存(HDFS)分布式NoSQL数据库(HBase)等等。本文将简单介绍基本的 Hadoop 系统的搭建方法。

Hadoop 在运行时由5个程序组成:

  • 1个NameNode,用于管理命名空间以及客户端对文件的访问;
  • 1个JobTracker,用于调度工作以及分配任务(Task);
  • 1个SecondaryNameNode,用于辅助NameNode的工作;
  • 1~N个DataNode 用于数据储存;
  • 1~N个TaskTracker 用于执行任务,DataNode 和 TaskTracker 总是成对出现在同一台计算机里运行。

前3个程序一般是分别在三台不同的计算机里运行,为了简单起见下面的例子将在同一台计算机里运行这3个程序,然后再另外找3台计算机运行DataNode(连同TaskTracker),所以这个示例一共需要4台计算机。结构图如下:

下面是详细的搭建过程

1、下载 Apache Hadoop
因为分布式储存是分布式计算的基础,所以我们必须下载 HDFS 。到这里下载 HDFS,这里使用的版本是 0.20.2,下载回来的一个压缩包已经包含了上面提到的5个程序。

2、配置 Hadoop
虽然在一个典型的 Hadoop 系统里会有 4种不同角色的计算机,不过我们为了简单起见可以先在某一台计算机编辑好配置文件,然后再分发到其他计算机,这样可以避免一台台地配置浪费时间。

a、编辑 conf/hadoop-env.sh,设置正确的 JAVA_HOME 环境变量,比如
export JAVA_HOME=/usr/lib/jvm (CentOS + OpenJDK)

PS:某些 Hadoop 版本在配置了 IPv6 的计算机上会监听错网络地址,所以需要增加如下一行以屏蔽 java 的 IPv6 功能:
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

b、编辑 conf/core-site.xml

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/var/lib/hadoop/hadoop-${user.name}</value>
</property>
 
<property>
  <name>fs.default.name</name>
  <value>hdfs://192.168.0.10:9000</value>
</property>
</configuration>

第一段设置数据的储存位置(相应的目录当前用户应该有全权限),第二段设置 namenode 服务地址,用于跟其他计算机交流。

c、编辑 conf/mapred-site.xml

<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>192.168.0.10:9001</value>
</property>
</configuration>

这段设置了 JobTracker 的服务地址。

d、编辑 conf/hdfs-site.xml

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

这段设置一个文件数据在 Hadoop 系统里冗余多少份,一般设置为3。这样一旦有新的文件数据写入 Hadoop,系统会随机将文件分别写入到3台datanode,这样一旦系统中的某一台 datanode 坏掉了(比如硬盘烧了)只需要将这台计算机整台卸下,再换上一台新的计算机到网络即可,数据会自动复制以保证始终有3份数据。这也是分布式储存系统维护方便的y原因。

e、编辑 /etc/hosts
由于 Hadoop 有时会使用 hostname 访问系统中的其他计算机,而 hostname 有时会解析错误,所以比较笨的方法是在 /etc/hosts 里增加每一台计算机的名称和IP地址。比如:

192.168.0.10    master
192.168.0.100    data001
192.168.0.101    data002
192.168.0.102    data003

3、复制已配置好的 Hadoop 到每一台计算机

首先要保证从 namenode 计算机能够使用  ssh public key 方式登录到其他的每一台计算机(当前示例是1台自己和3台 datanode),实现的方法是在 namenode 计算机使用 ssh-keygen 命令生成 ssh public key,对于红帽系 Linux 发行版可能还需要运行 ssh-add 命令,然后使用 ssh-copy-id 的方法把这个 key 复制到每一台计算机,然后使用 ssh 登录一次所有计算机(包括自己)。

接下来就可以使用 scp 命令复制配置好的 Hadoop 程序到每一台 datanode 计算机了,Hadoop 程序的存放位置必须一致,比如在 namenode 计算机中Hadoop程序位于 /usr/local/hadoop,那么其他计算机也应该存放在这里。

4、设置 namenode 特有的配置
因为我们可以在 namenode 控制所有计算机的 Hadoop 启动或者关闭,所以需要列出有哪些计算机是受控制的。
a、编辑 conf/master 文件,写入如下1行
192.168.0.10
这一行表示要启动的 secondaryNameNode 位于 192.168.0.10 这台计算机(跟 nameNode 同用一台)
b、编辑 conf/slaves 文件,写入如下3行
192.168.0.100
192.168.0.101
192.168.0.102
这表示当前 Hadoop 系统一共有3台 datanode。

5、格式化 namenode
这一步只需做一遍,切换到 Hadoop 程序目录,运行:

$ bin/hadoop namenode -format

6、启动 hadoop

$ bin/start-dfs.sh

这时应该看到启动了 namenode, secondaryNamenode 以及3个 datanode。

$ bin/start-mapred.sh

这时应该看到启动了 jobTracker 和 3个taskTracker。
上面的两个命令也可以用一个命令代替:bin/start-all.sh

7、测试一个分布式计算
在 Hadoop 程序目录里附带了一个统计一个文件里每个单词出现次数的示例,下面将会用它来测试。
首先你需要准备几个纯文本文件(比如有文件 /tmp/text/hello.txt 和 /tmp/text/world.txt ),把他写入到 Hadoop。

$ bin/hadoop fs -copyFromLocal /tmp/text text

这样就会在 Hadoop 里创建了一个 text 文件夹,并且把 hello.txt 和 world.txt 复制到其中了。可以运行 ls 命令查看 Hadoop 里面的文件:

$ bin/hadoop fs -ls

然后运行示例程序

$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount text text-output

运行完毕之后使用 ls 命令可以查看运行结果:

$ bin/hadoop fs -ls text-output

你可以根据示例的源码修改成自己的程序,并且运行测试一下。

8、Web 监控页面
访问 http://192.168.0.10:50070 可以查看 namenode 的总体运行情况以及已连入的 datanode 列表
访问 http://192.168.0.10:50030 可以查看 jobTracker 的运行情况以及各个 taskTracker 的运行情况和日志

9、关闭Hadoop系统
$bin/stop-all.sh

10、新增加一台 datanode 到系统
如果某台 datanode 重启了,为了让它重新加入 Hadoop 系统,需要在 datanode 计算机上运行:

$ bin/hadoop -daemon.sh start datanode

假如系统需要扩容或者换了一台新机器,这时只需把之前配置好的 Hadoop 复制过来,然后运行上面一行命令即可。假如新增了IP地址或者IP地址发生改变,记得还要在 conf/slaves 文件里作相应的增改。

最后,需要成功配置 Hadoop 可能会有些意外问题,最好的解决方法是查看 Hadoop 的日志,一般来根据日志提供的线索都能把问题解决。

参考资料
1、Hadoop中文文档
2、Hadoop 命令手册
3、Running Hadoop On Ubuntu Linux (Single-Node Cluster)
4、Running Hadoop On Ubuntu Linux (Multi-Node Cluster)

继续阅读下一篇

  • 大小: 17.5 KB
分享到:
评论

相关推荐

    Pro apache Hadoop

    通过阅读《Pro Apache Hadoop》,读者不仅可以掌握Hadoop的基本概念和技术,还能深入了解大数据处理的最佳实践,从而在实际工作中解决复杂的数据挑战。这本书适合于有志于大数据处理的开发者、系统管理员、数据科学...

    TeraByte Sort on Apache Hadoop

    《TeraByte Sort on Apache Hadoop》这篇论文不仅详细介绍了如何使用Hadoop进行大规模数据排序的具体实现,还提供了宝贵的实践经验和技术细节,对于理解和运用Hadoop解决大数据问题具有重要的参考价值。通过TeraGen...

    Pro Apache Hadoop, 2nd Edition

    《Pro Apache Hadoop, 2nd Edition》是一本专门介绍Apache Hadoop第二版的专业书籍。Hadoop是一个开源框架,旨在从大型数据集中进行存储和处理的分布式系统。它允许开发者使用简单的编程模型在计算机集群上分布式地...

    Apache Hadoop Goes Realtime at Facebook

    ### Apache Hadoop 实现Facebook实时计算的关键技术与实践 #### 概述 随着大数据时代的到来,数据处理的需求日益增长,特别是在社交媒体平台如Facebook这样的大型应用上。为了应对这些挑战,Facebook选择采用...

    Pro Apache Hadoop 2nd Edition 2014

    3. **第3章:开始使用Hadoop框架** - 在这一章中,作者指导读者如何安装配置Hadoop,并通过实践操作来熟悉Hadoop的工作流程。 4. **第4章:Hadoop管理** - 这一章重点讲解了如何管理和维护Hadoop集群,包括监控、...

    hadoop集群的搭建(apache)

    Hadoop是大数据处理领域的重要工具,它是一个开源的分布式计算框架,由Apache软件基金会开发。本文将深入探讨如何搭建一个Hadoop集群,以及MapReduce的基本原理和应用实例。 首先,我们要理解Hadoop的核心组件:...

    云计算之Apache Hadoop介绍 共133页.pdf

    Apache Hadoop是云计算领域中的一个核心组件,尤其在大数据处理方面...这个133页的文档很可能详细阐述了Hadoop的原理、安装配置、操作实践和案例分析,对于理解Hadoop和云计算环境下的大数据处理具有很高的参考价值。

    英特尔Apache Hadoop 软件发行版高可用性操作手册2.3.

    英特尔Apache Hadoop软件发行版高可用性操作手册2.3主要介绍的是在2013年3月发布的版本为2.3的Apache Hadoop的高可用性配置与维护指南。高可用性是指系统或组件能够无中断地提供服务的能力,是企业级应用和大数据...

    Hadoop集群配置及MapReduce开发手册

    总的来说,《Hadoop集群配置及MapReduce开发手册》是一本全面、深入的实践指南,对于想要学习和掌握Hadoop及其相关技术的开发者来说,具有极高的参考价值。通过深入阅读和实践,读者将能够熟练地部署和管理Hadoop...

    spring-hadoop-getting-started:Spring for Apache Hadoop 入门示例

    《Spring for Apache Hadoop 入门指南》 Apache Hadoop 是一个开源...在实际项目中,结合"spring-hadoop-getting-started-master"这个示例项目,你可以深入学习并实践Spring Hadoop的使用,从而更好地驾驭Hadoop生态。

    《HDFS——Hadoop分布式文件系统深度实践》PDF

    《HDFS——Hadoop分布式文件系统深度实践》这本书是针对Hadoop分布式文件系统(HDFS)的详尽指南,旨在帮助读者深入理解HDFS的工作原理、设计思想以及在实际应用中的最佳实践。HDFS是Apache Hadoop项目的核心组件之...

    Hadoop简单应用案例

    这个"**Hadoop简单应用案例**"涵盖了Hadoop生态系统中的多个关键组件,包括MapReduce、HDFS、Zookeeper以及Hive,这些都是大数据处理的核心工具。下面将详细讲解这些知识点。 1. **MapReduce**:MapReduce是Hadoop...

    Elasticsearch集成Hadoop最佳实践

    **Elasticsearch 集成 Hadoop 最佳实践** 在大数据处理领域,Elasticsearch 和 Hadoop 是两个不可或缺的重要组件。Elasticsearch 是一个实时、分布式、搜索和分析引擎,而 Hadoop 是一个用于大规模数据处理的开源...

    Hadoop2.2.0安装配置及实例教程入门宝典

    《Hadoop2.2.0安装配置及实例教程入门宝典》 在大数据处理领域,Hadoop是一个不可或缺的工具,其分布式存储和计算能力为企业级数据处理提供了强大的支持。本教程将带你逐步走进Hadoop的世界,从零开始,教你如何在...

    apache-hadoop-docs

    集群搭建是Hadoop实施中的重要环节,文档可能会详细解释如何配置和管理Hadoop集群,包括硬件需求、网络设置、节点角色分配以及安装和启动Hadoop服务的步骤。此外,还会涉及Hadoop的YARN(Yet Another Resource ...

    搭建Hadoop集群所需的tar包.zip

    3. 配置Hadoop环境,包括设置HDFS和YARN的相关配置(如core-site.xml, hdfs-site.xml, yarn-site.xml等)。 4. 初始化HDFS,格式化NameNode,并启动Hadoop守护进程。 5. 安装并配置HBase,包括修改hbase-site.xml以...

    Hadoop-HDFS-实践教程

    Hadoop-HDFS实践教程会引导初学者了解HDFS的基本概念和架构,讲解如何安装和配置Hadoop以及HDFS,并展示如何使用HDFS进行数据的存储和访问。此外,教程还会介绍如何通过Java API来操作HDFS,例如:如何读写文件、...

Global site tag (gtag.js) - Google Analytics