Hadoop和大数据分析简介

hadoop

原文作者:Saurabh Jha

原文地址:https://opensourceforu.com/2013/12/introduction-tohadoop-big-data-analysis/


Hadoop已经成为通过其Hadoop分布式文件系统(HDFS)存储大数据以及使用其MapReduce组件对存储的大数据进行分析的中央平台。本文主要探讨Hadoop的基础知识。

我们中的许多人肯定听说过大数据,Hadoop和数据分析。行业现在主要关注他们,Gartner将战略大数据和可操作分析确定为2013年十大战略技术趋势之一。

据Gartner网站称:“大数据正在从关注个人项目转向关注对企业战略信息架构的影响。处理数据量,品种,速度和复杂性迫使许多传统方法发生变化。这种认识正在促使组织放弃包含决策所需信息的单一企业数据仓库的概念。相反,他们正在转向多种系统,包括内容管理,数据仓库,数据集市以及与数据服务和元数据绑定在一起的专用文件系统,这些系统将成为合乎逻辑的企业数据仓库。

有各种系统可用于大数据处理和分析,Hadoop的替代品(如HPCC)或亚马逊新推出的Red Shift。但是,Hadoop的成功可以通过不同技术公司提供的Hadoop发行版的数量来衡量,例如IBM InfoSphere BigInsights,Azure上的Microsoft HDInsight Service,Cloudera Hadoop,Yahoo的Hadoop发行版等等。其成功背后基本有四个原因:

  • 这是一个开源项目。
  • 它可以用于多个领域。
  • 它在容错,可用性和文件系统方面有很大的改进空间。

还有最后一个原因就是可以像Hive,Pig,Jaql等那样在SQL中编写Hadoop作业,而不是使用复杂的MapReduce。这使公司能够修改Hadoop内核或其任何分发版以适应公司自己的需求和项目需求。在本文中,我们将只关注Hadoop的基础知识。但是,在本系列即将发表的文章中,我们将主要关注容错和Hadoop的可用性功能。

在形式上,Hadoop是一种开源、大规模、批量数据处理、分布式计算框架,用于大数据存储和分析。它有利于可扩展性并负责检测和处理故障。Hadoop通过在整个集群的不同节点中创建数据的多个副本,来确保数据的高可用性。默认情况下,复制因子被设置为3.在Hadoop中,代码被移动到数据的位置,而不是将数据移向代码。在本文的其余部分,“每当我提到Hadoop时,我都会引用可从http://hadoop.apache.org获得的Hadoop Core包”。 Hadoop有五个主要组件:

  • MapReduce(一个job tracker 和一个 task tracker)
  • NameNode和Secondary NameNode
  • DataNode(运行在slave节点上)
  • JobTracker(运行在master节点上)
  • TaskTracker(运行在slave节点上)

译者注:在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出的运行于各个计算节点的工作单元称为“任务(task)”。

MapReduce

MapReduce框架由Google引入。根据谷歌关于MapReduce的论文中的一个定义,MapReduce是一个简单而强大的界面,可以实现大规模计算的自动并行化和分布,结合该接口的一个实现,达到高性能大型pc集群。

它基本上有两个组件:Map和Reduce。MapReduce组件用于数据分析编程。它完全隐藏了用户的系统细节。

HDFS

Hadoop有自己的分布式文件系统实现,称为Hadoop分布式文件系统。它提供了一组命令,就像UNIX文件和目录操作一样。也可以将HDFS挂载为fuse-dfs并使用所有UNIX命令。数据块通常是128 MB; 因此,一个300 MB的文件将被分割为2 x 128 MB和1 x 44 MB。所有这些拆分块将在集群上被复制'N'次。N是复制因子,通常设为3。

NameNode

NameNode包含有关块的位置信息以及整个目录结构和文件的信息。这是集群中的单点故障,即如果NameNode发生故障,整个文件系统就会崩溃。因此Hadoop还包含一个辅助NameNode,它包含一个编辑日志,在NameNode发生故障的情况下,它可用于重放文件系统的所有操作,从而恢复文件系统的状态。辅助NameNode定期以NameNode的编辑日志的形式创建检查点映像。

DataNode

DataNode运行在所有的slave 机器上,并实际存储集群的所有数据。DataNode定期向NameNode报告存储的块列表。

Job Tracker and Task Tracker

Job Tracker运行在masteer主节点上,而Task Tracker运行在Slave副节点上,每个Task Tracker都有多个Task实例运行,,每一个Task Tracker都定期以心跳的形式向Job Tracker报告,这也包括了他正在执行的当前任务的细节,并且,如果它已经执行完毕,它就处于空闲状态。Job Tracker 调度作业,,并通过在其他节点上重新执行他们来处理失败的任务。Job Tracker目前是Hadoop集群中的一个单点故障。

Hadoop实际操作

让我们尝试一个简单的Hadoop字数统计范例。首先,您需要在您自己的Linux环境中设置Hadoop环境,或从https://ccp.cloudera.com/display/SUPPORT/CDH+Downloads获取预配置的虚拟机。如果您愿意自己配置Hadoop,请参阅Michael Noll着名的教程“在Ubuntu Linux(多节点群集)上运行Hadoop”。一旦完成了Hadoop的配置,您可以尝试下面给出的示例:

$HADOOP_HOME/bin/hadoop start-all.sh jps mkdir input nano wordsIn \\fill this file with random words and exit or copy a file into input dir in text format $HADOOP_HOME/bin/hadoop dfs -copyFromLocal ./input /user/hduser/input hadoop dfs -cat /user/hduser/input1/* \\ lists the content of file cd $HADOOP_HOME ./bin/hadoop jar hadoop-examples-1.0.4.jar wordcount /user/hduser/input /user/hduser/output ./bin/hadoop dfs -cat /user/hduser/output/* ./bin/stop-all.sh <a href="http://www.opensourceforu.com/wp-content/uploads/2013/12/Figure-110.jpg"><img class="alignleft size-large wp-image-13319" alt="Figure-1" src="http://www.opensourceforu.com/wp-content/uploads/2013/12/Figure-110-590x444.jpg" width="590" height="444" /></a><a href="http://www.opensourceforu.com/wp-content/uploads/2013/12/Figure-28.jpg"><img class="alignleft size-large wp-image-13320" alt="Figure-2" src="http://www.opensourceforu.com/wp-content/uploads/2013/12/Figure-28-590x401.jpg" width="590" height="401" /></a>

代码中的第一行为Hadoop启动所需的服务。使用jps命令可以查询系统上运行的所有Java虚拟机。您应该看到在您的系统上运行以下服务。

  • NameNode
  • DataNode
  • Secondary NameNode
  • Job Tracker
  • Task Tracker
  • Jps

如果上述任何服务未运行,则表示您的Hadoop无法正常启动。在第3行中(mkdir input),创建要复制到HDFS的本地文件夹。

在第4行中(nano wordsIn \\fill thisfilewith random words andexitor copy afileinto inputdirintextformat),创建一个文本文件并用一些随机文本填充它。

在第6行中(hadoop dfs  -cat/user/hduser/input1/* \\ lists the content offile),列出复制文件的内容。

在第8行中(./bin/hadoopjar hadoop-examples-1.0.4.jar wordcount/user/hduser/input/user/hduser/output),运行分发附带的Hadoop字数统计示例。

在第9行中(./bin/hadoopdfs -cat/user/hduser/output/*),列出生成结果的输出。

最后,在第10行中(./bin/stop-all.sh),停止所有Hadoop服务。

本文涵盖了大数据,分析和Hadoop的各个方面。我主要关注Hadoop架构,并指出Hadoop在容错和恢复方面的漏洞。我们还特别了解了NameNode和Job Tracker如何成为系统中的瓶颈。它们是整个系统的单点故障。许多Hadoop发行版都试图解决Hadoop Core中发现的容错和恢复问题。然而,实施容错和恢复算法会产生性能问题。在这个领域的研究重点是减少性能和可靠性问题,以获得两全其美。

本文的版权归 阿小庆 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏聊聊技术

Apache Spark:大数据时代的终极解决方案

Apache Spark是基于Hadoop MapReduce的数据分析引擎,它有助于快速处理大数据。它克服了Hadoop的限制,正在成为最流行的大数据分析框架...

4673
来自专栏我是攻城师

Pig0.15集成Tez,让猪飞起来

3766
来自专栏加米谷大数据

技术分享 | 提升Hadoop性能和利用率你知道有哪些吗?

时下流行的词汇是大数据和Hadoop。了解大数据的知道Hadoop有三个组件,即HDFS、MapReduce和Yarn。 HDFS代表Hadoop分布式文件系统...

3535
来自专栏数据派THU

手把手教你入门Hadoop(附代码资源)

作者:GETINDATA公司创始人兼大数据顾问彼得亚·雷克鲁斯基(Piotr Krewski)和GETINDATA公司首席执行官兼创始人亚当·卡瓦(Adam K...

1534
来自专栏鸿的学习笔记

Spark生态系统的顶级项目

Spark开发了一个丰富的生态系统,包括le 官方和第三方工具。 我们来看看5个以不同方式加强了Spark的第三方项目。

1002
来自专栏叁金大数据

漫谈未来的HDFS

前面我们提到的HDFS,了解了HDFS的特性和架构。HDFS能够存储TB甚至PB规模的数据是有前提的,首先数据要以大文件为主,其次NameNode的内存要足够大...

1453
来自专栏加米谷大数据

大数据基础之Spark

Spark 是 2010 年由 UC Berkeley AMPLab 开源的一款 基于内存的分布式计算框架,2013 年被Apache 基金会接管,是当前大数据...

952
来自专栏数据科学与人工智能

【Spark研究】用Apache Spark进行大数据处理第一部分:入门介绍

什么是Spark Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于20...

2527
来自专栏测试开发架构之路

【转载】Impala和Hive的区别

Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中...

1662
来自专栏技术问题

漫谈未来的HDFS

前面我们提到的HDFS,了解了HDFS的特性和架构。HDFS能够存储TB甚至PB规模的数据是有前提的,首先数据要以大文件为主,其次NameNode的内存要足够大...

410

扫码关注云+社区

领取腾讯云代金券