在开始利用Hadoop之前,你须要理解一下Hadoop生态系统。Hadoop生态系统既不是编程措辞也不是做事。它是办理大数据问题的平台或框架。你可以将其视为套件,个中包含内部的许多做事(记录、存储、剖析和掩护)。让我们简要理解做事是如何单独与协同事情的。
以下是共同构成Hadoop生态系统的Hadoop组件:
HDFS — Hadoop分布式文件系统YARN — 另一个资源会谈者MapReduce — 利用编程进行数据处理Spark — 内存中数据处理PIG,HIVE — 利用查询的数据处理做事(类似于SQL)HBase — NoSQL数据库Mahou,Spark MLlib — 机器学习Apache Drill — Hadoop上的SQLZookeeper — 管理群集Oozie — 作业调度Flume,Sqoop — 数据提取做事Solr and Lucene — 搜索和索引Ambari — 配置,监控和掩护集群

Hadoop分布式文件系统
Hadoop分布式文件系统的核心部件,或者说是Hadoop的生态系统的支柱。
HDFS可以存储不同类型的大型数据集(即构造化,非构造化和半构造化数据)。HDFS在资源上创建了一个抽象级别,在这里我们可以将全体HDFS视为一个单元。它有助于我们在各个节点上存储数据并掩护有关存储数据(元数据)的日志文件。HDFS具有两个核心组件(NameNode和DataNode)。1.该NameNode是主节点,它不存储的实际数据。它包含元数据,就像日志文件一样,或者你可以说是目录。因此,它须要较少的存储空间和较高的打算资源。2.另一方面,你的所有数据都存储在DataNodes上,因此须要更多的存储资源。这些DataNode是分布式环境中的商品硬件(例如条记本电脑和台式机)。这便是Hadoop办理方案非常具有本钱效益的缘故原由。3.NameNode在写入数据时,你始终与之通信。然后,它在内部向客户端发送一个要求,以存储和复制各种数据DataNodes。Hadoop分布式文件存储架构
YARN
YARN相称于Hadoop生态系统的大脑,它通过分配资源和安排任务来实行你的所有处理活动。
它有两个紧张部分(ResourceManager和NodeManager)。1.ResourceManager还是加工部门的紧张节点。2.它吸收处理要求,然后将要求的各个部分通报到相应的NodeManagers,在该处进行实际处理。3.NodeManagers安装在每个DataNode上,它卖力在每个单个DataNode上实行任务。调度程序:调度程序根据你的运用程序资源需求,实行调度算法并分配资源。ApplicationsManager:在ApplicationsManager接管作业提交的同时,它与容器(即进程实行所在的数据节点***进行协商,以实行特定运用程序ApplicationMaster并监视进度。ApplicationMasters是驻留在容器上的守护进程,DataNode与容器通信以在每个容器上实行任务DataNode。ResourceManager有两个组成部分(Schedulers和ApplicationsManager)。MapReduce它供应了处理逻辑,是Hadoop生态系统中处理的核心组件。换句话说,MapReduce是一个软件框架,可帮助编写利用Hadoop环境中利用分布式和并行算法处理大型数据集的运用程序。
在MapReduce程序中,Map()和Reduce()是两个函数。1.该Map功能实行诸如过滤、分组和排序之类的操作。2.该Reduce函数汇总并汇总该函数产生的结果map。3.Map函数天生的结果是一个键-值对(K,V),用作该Reduce函数的输入。MapReduce数据集
让我们以上面的示例为例,以更好地理解MapReduce程序。
有这样一个学生及其所属部门的样本案例,我们要打算每个部门的学生人数。最初,Map程序将实行并打算涌如今每个部门的学生,从而产生键值对,如上所述。此键值对是Reduce函数的输入。Reduce然后,该函数将汇总每个部门的人数,并打算每个部门的学生总数并得出给定的结果。
Apache Pig
PIG有两个部分:Pig Latin(措辞)和Pig runtime(实行***,即实行环境。你可以更好地将其理解为Java和JVM。
它支持pig拉丁语措辞,该措辞具有类似于SQL的命令构造。
Apache PIG可以减轻那些没有编程背景的人的困扰。
编译器在内部将Pig Latin转换为MapReduce。它会产生一系列MapReduce作业。PIG最初由Yahoo开拓。它为你供应了一个平台来构建ETL(提取,转换和加载),处理和剖析弘大数据集的数据流。Pig如何事情?在PIG中,首先,load命令加载数据。然后,我们对其实行各种功能,例如分组、过滤、联接、排序等。末了,你可以在屏幕上转储数据,也可以将结果存储回HDFS。
Apache Hive
Facebook为精通SQL的人创建了HIVE。因此,HIVE使他们在Hadoop生态系统中事情时感到宾至如归。
基本上,HIVE是一个数据仓库组件,它利用类似SQL的界面在分布式环境中实行读取,写入和管理大型数据集。
HIVE + SQL = HQL
Hive的查询措辞称为Hive查询措辞(HQL)。它具有两个基本组件:Hive命令行和JDBC / ODBC驱动程序。Hive命令行接口用于实行HQL命令。Java数据库连接(JDBC)和工具数据库连接(ODBC)用于从数据存储建立连接。Hive具有高度可伸缩性。它可以实行大型数据集处理(即批处理查询处理)和实时处理(即交互式查询处理)的操作。它支持SQL的所有原始数据类型。你可以利用预定义功能或编写定制的用户定义功能(UDF)来知足你的特定需求。Apache Mahout现在,让我们谈谈以机器学习而有名的Mahout。Mahout供应了一个用于创建可扩展的机器学习运用程序的环境。
Mahout能做什么?
它实行协作式过滤,聚类和分类。有些人还认为短缺频繁项集是Mahout的功能。让我们分别理解它们:
1.协作过滤:Mahout会挖掘用户的行为,其模式及其特色,并预测并向用户提出建议。范例的用例是电子商务网站。
2.群集:它将相似的数据组组织在一起,例如可以包含博客、新闻、研究论文等的文章。
3.分类:这意味着将数据分类和归类为各个子部门(即文章可以归类为博客、新闻、文章、研究论文等)。
4.短缺频繁的项目集:在这里,Mahout会检讨哪些工具可能会一起涌现,并提出建议(如果短缺)。例如,常日将手机和保护套放在一起。因此,如果你搜索手机,它也会为你推举外壳和保护套。
Mahout供应了一个命令行来调用各种算法。它具有一组预定义的库,该库已包含针对不同用例的不同内置算法。
Apache Spark
Apache Spark是用于分布式打算环境中的实时数据剖析的框架。Spark是用Scala编写的,最初是在加利福尼亚大学伯克利分校开拓的。它实行内存中计算以提高Map-Reduce上的数据处理速率。
通过利用内存打算和其他优化,对付大规模数据处理,它的速率比Hadoop快100倍。因此,它比Map-Reduce须要更高的处理能力。
如你所见,Spark附带了高等库,包括对R、SQL、Python、Scala、Java等的支持。这些标准库增加了繁芜事情流程中的无缝集成。此外,它还许可各种做事集与其集成,例如MLlib、GraphX、SQL+数据框架,流做事等,以增强其功能。
这是每个人心中很普遍的问题:
“ Apache Spark:Apache Hadoop的杀手还是救星?” –奥莱利
答案:这不是苹果与苹果的比较。Apache Spark最适宜实时处理,而Hadoop旨在存储非构造化数据并对其实行批处理。当我们结合利用Apache Spark的能力(即高处理速率,高等剖析和对Hadoop的商品硬件低本钱操作的多重集成支持)时,它可以供应最佳结果。
这便是为什么许多公司将Spark和Hadoop一起利用来处理和剖析存储在HDFS中的数据的缘故原由。
Apache HBase
HBase是一个开源的、非关系的、分布式数据库。换句话说,它是一个NoSQL数据库。它支持所有类型的数据,这便是为什么它能够处理Hadoop生态系统中的任何事物。
它以Google的BigTable建模为根本,BigTable是旨在应对大型数据集的分布式存储系统。HBase设计为在HDFS之上运行,并供应类似BigTable的功能。
它为我们供应了一种存储稀疏数据的容错办法,这在大多数大数据用例中都很常见。HBase用Java编写,而HBase运用程序可以用REST,Avro和Thrift API编写。
为了更好地理解,让我们举个例子。你有数十亿客户的电子邮件,并且须要找出在他们的电子邮件中利用“投诉”一词的客户数量。该要求须要快速处理(即实时)。因此,在这里,我们正在处理大量数据集,同时检索少量数据。HBase旨在办理此类问题。
Apache Drill
顾名思义,Apache Drill用于钻取任何类型的数据。这是一个开放源代码运用程序,可与分布式环境一起利用以剖析大型数据集。
它是Google Dremel的副本。它支持各种NoSQL数据库和文件系统,包括Azure Blob存储,Google Cloud Storage、HBase、MongoDB、MapR-DB HDFS、MapR-FS、Amazon S3、Swift、NAS和本地文件。实质上,Apache Drill背后的紧张目标是供应可伸缩性,以便我们可以高效地处理PB级和EB级的数据(或者你可以在几分钟内说出)。
Apache Drill的紧张功能在于仅通过单个查询即可组合各种数据存储。Apache Drill基本上遵照ANSI SQL。它具有强大的可伸缩性成分,可支持数百万个用户并在大规模数据上知足其查询要求。Apache ZooKeeperApache ZooKeeper是任何Hadoop作业的折衷者,个中包括Hadoop生态系统中各种做事的组合。Apache ZooKeeper在分布式环境中与各种做事折衷。
在利用Zookeeper之前,在Hadoop生态系统中的不同做事之间进行折衷非常困难且耗时。先前的做事在同步数据时在交互方面存在很多问题,例如通用配置。纵然配置了做事,做事配置的变动也会使其变得繁芜且难以处理。分组和命名也是一个耗时的成分。
由于上述问题,引入了ZooKeeper。通过实行同步,配置掩护,分组和命名,可以节省大量韶光。 只管它是一项大略的做事,但可用于构建功能强大的办理方案。
像Rackspace,Yahoo和eBay这样的大公司在全体数据事情流程中都利用此做事,因此你对ZooKeeper的主要性有所理解。
Apache Oozie
将Apache Oozie视为Hadoop生态系统中的时钟和警报做事。对付Apache作业,Oozie就像调度程序一样。它调度Hadoop作业,并将它们作为一项逻辑事情绑定在一起。
Oozie事情有两种:
1.Oozie事情流程:这些是要实行的顺序动作集。你可以将其视为接力赛,每个运动员都在等待末了一个运动员完成比赛。
2.Oozie折衷器:这些是Oozie作业,当数据可用时会触发这些作业。将此视为我们体内的反应刺激系统。就像我们对外部刺激做出反应一样,Oozie折衷员也会对数据的可用性做出相应,而其他情形则不然。
Apache Flume摄取数据是我们Hadoop生态系统的主要组成部分。
Flume是一项做事,可帮助将非构造化和半构造化数据导入HDFS。
它为我们供应了一个办理方案,可靠和分发,并帮助我们在网络,汇总, 并移动大量的数据集。它有助于从HDFS中的各种来源(例如网络流量,社交媒体,电子邮件,日志文件等)中提取在线流数据。现在,让我们从下图理解Flume的体系构造:
Flume代理将流数据从各种数据源提取到HDFS。从图中可以很随意马虎地理解Web做事器指示数据源。Twitter是流数据的著名来源之一。
槽剂具有三个组成部分:源,吸收器和通道。
1.源:从传入的流线吸收数据,并将该数据存储在通道中。
2.通道: 充当本地存储或主存储。通道是HDFS中数据源和持久数据之间的临时存储。
3.吸收器:从通道网络数据,并永久将数据提交或写入HDFS。
Apache Sqoop
现在,让我们谈谈另一个数据摄取做事,即Sqoop。Flume和Sqoop之间的紧张差异在于:
Flume仅将非构造化数据或半构造化数据摄取到HDFS中。虽然Sqoop可以从RDBMS或企业数据仓库向HDFS导入和导出构造化数据,反之亦然。
让我们利用下图理解Sqoop的事情办法:
当我们提交Sqoop命令时,我们的紧张任务被分为子任务,然后由内部的单个Map Task处理。Map Task是子任务,它将部分数据导入Hadoop生态系统。
当我们提交作业时,它将被映射到“映射任务”中,该任务从HDFS中带入大量数据。这些块被导出到构造化数据目的地。结合所有这些导出的数据块,我们将在目的地吸收全体数据,该目的地在大多数情形下是RDBMS(MYSQL / Oracle / SQL Server)。
Apache Solr and LuceneApache Solr和Apache Lucene用于在Hadoop生态系统中进行搜索和建立索引。
Apache Lucene基于Java,它也有助于拼写检讨。如果说Apache Lucene是引擎,那么Apache Solr便是环绕它建造的汽车。它利用Lucene Java搜索库作为搜索和完全索引的核心。Apache AmbariAmbari是一个Apache软件基金会项目,旨在使Hadoop生态系统更易于管理。
它包括用于置备,管理和监视 Apache Hadoop集群的软件。
Ambari供应:
1.Hadoop集群配置:
它为我们供应了在多个主机上安装Hadoop做事的分步过程。它还处理集群上Hadoop做事的配置。
2.Hadoop集群管理:
它供应了一个集中管理做事,用于跨集群启动,停滞和重新配置Hadoop做事。
3.Hadoop集群监控:
为了监视康健和状态,Ambari供应了一个仪表板。黄色警报框架是一种告警做事关照每当须要关注的用户(例如,如果一个节点涌现故障或节点上磁盘空间不敷等)。
末了,我想请你把稳以下三个主要解释:
1.Hadoop生态系统的成功归功于全体开拓职员社区。许多大型组织,例如Facebook,Google,Yahoo,加利福尼亚大学(伯克利)等,都为提高Hadoop的功能做出了贡献。
2.在Hadoop生态系统内部,有关一个或两个工具(Hadoop组件)的知识将无助于构建办理方案。你须要学习一组Hadoop组件,这些组件可以一起构建一个办理方案。
3.根据用例,我们可以从Hadoop生态系统中选择一组做事,并为组织创建量身定制的办理方案。