Hadoop 系统分布式存储与并行计算框架

Hadoop是Apache开发用的可靠、可扩展、分布式的计算开源软件。Hadoop是一个框架,允许使用简单的编程模型在大量计算机上对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。库本身不是依靠硬件来提供高可用性

       Hadoop是Apache开发用的可靠、可扩展、分布式的计算开源软件。Hadoop是一个框架,允许使用简单的编程模型在大量计算机上对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用程序层的故障,因此在一组计算机上提供高可用性服务,每个计算机都可能会出现故障。
       Apache Hadoop项目包括以下模块:
       Hadoop Common:支持其他Hadoop模块的常用工具。
       Hadoop分布式文件系统(HDFS):提供对应用程序数据的高吞吐量访问的分布式文件系统。
       Hadoop YARN:作业调度和集群资源管理的框架。
       Hadoop MapReduce:一种基于YARN的大型数据集并行处理系统。
       Apache的其他与Hadoop相关的项目包括:
       Ambari:用于配置,管理和监控Apache Hadoop集群的基于Web的工具,其中包括支持Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop。 Ambari还提供了一个用于查看集群健康状况的仪表板,例如散热图,以及可视化查看MapReduce,Pig和Hive应用程序以及以用户友好的方式诊断其性能特征的功能的功能。
       Avro:数据序列化系统。
       Cassandra:可扩展的多主数据库,无单点故障。
       Chukwa:用于管理大型分布式系统的数据收集系统。
       HBase:可扩展的分布式数据库,支持大型表格的结构化数据存储。
       Hive:提供数据摘要和即席查询的数据仓库基础设施。
       Mahout:可扩展的机器学习和数据挖掘库。
       Pig:并行计算的高级数据流语言和执行框架。
       Spark:一种用于Hadoop数据的快速且通用的计算引擎。 Spark提供了一个简单而富有表现力的编程模型,支持各种应用,包括ETL,机器学习,流处理和图形计算。
       Tez:一种基于Hadoop YARN的通用数据流编程框架,它提供了强大且灵活的引擎,可以执行任意DAG任务来处理批量和交互式用例的数据。 Tez被Hadoop,Pig和Hadoop生态系统中的其他框架以及其他商业软件(例如ETL工具)所采用,以替代Hadoop,MapReduce作为底层执行引擎。
       ZooKeeper:分布式应用程序的高性能协调服务。
       Hadoop的五大优势。高扩展性、成本低、更好的灵活性、速度快、容错能力强。高扩展性体现在,Hadoop可以在很多廉价的数据集群上存储和分发数据。

1、分布式文件系统HDFS

       当一台计算机的存储不能满足所需要存储文件的大小时,就有必要对文件进行分区并存储到不同的计算机上。管理这些不同计算机的文件系统就称为分布式文件系统。即Hadoop Distribute Filesystem。HDFS的特点是:存储超大文件、流式数据访问、普通硬件、多用户写入,任意修改文件。

2、分布式数据库管理系统HBase

       Hbase是一个分布式,可扩展、分布式的大型数据存储库,解决了HDFS难以管理大量结构化或者半结构化的数据的问题。当需要对对结构化、半结构化甚至非结构化大数据进行随机,实时读/写访问时,请使用Apache HBase。 该项目的目标是在商品硬件集群上托管非常大的表格 – 数十亿行X数百万列。Apache HBase是一个开放源码,分布式,版本化的非关系数据库,由Google的Bigtable:Chang等人建成的结构化数据分布式存储系统模型。 正如Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的功能。

Hbase的特征:

线性和模块化的可伸缩性

严格一致的读和写。

表的自动和可配置分片

支持区域服务器之间的自动故障转移。

支持使用Java API用于客户端访问。

块缓存和Bloom过滤器用于实时查询。

查询谓词通过服务器端过滤器向下推

节点网关和REST-Wise Web服务支持XML,Protobuf和二进制数据编码选项

可扩展jruby-based(JIRB)壳

支持通过Hadoop的度量子系统向文件或神经节导出指标,或者通过JMX

3、 数据流处理工具Pig

        Pig是分析大型数据集的平台,包括用于表达数据分析程序的高级语言,以及用于评估这些程序的基础设施。 Pig程序的显着特点在于它们的结构适用于大量的并行化,从而使它们能够处理非常大的数据集。
       目前,Pig的基础设施层由编译器组成,该编译器生成Map-Reduce程序序列,为此已经存在大规模的并行实现(例如,Hadoop子项目)。Pig的语言层目前由一种称为Pig Latin的文本语言组成,它具有以下主要属性:
 
       易于编程。实现并行执行简单的“尴尬并行”数据分析任务是微不足道的。由多个相互关联的数据转换组成的复杂任务被明确编码为数据流序列,使其易于编写,理解和维护。
       优化机会。任务编码的方式允许系统自动优化其执行,允许用户专注于语义而不是效率。
       可扩展性。用户可以创建自己的功能进行专门的处理。

4、分布式数据仓库处理工具 Hive

Hive数据仓库软件便于阅读,写作,和管理大型数据集居住在分布式存储使用SQL。
Hive通过把数据组织成表存储在HDFS的数据赋予结构。ive提供了比MapReduce更少的编码的更简单的查询模型,HQL和SQL具有相似的语法,Hive提供了许多功能,可以更方便地分析使用,Hive支持在不同的计算框架上运行,Hive支持HDFS和Hbase上的即时查询数据,Hive支持用户定义的功能,脚本和自定义I / O格式来扩展功能,成熟的JDBC和ODBC驱动程序允许许多应用程序拉取Hive数据以进行无缝报告,Hive具有良好的元数据管理,身份验证和优化架构,工作和使用Hive的从业者和开发人员很多。

5、数据交换工具 Sqoop

       Sqoop的是一种在平台之间进行快速批数据交换的工具。例如,从关系型数据库中把数据导入到hadoop分布式文件管理系统,从hadoop分布式文件管理系统中把数据导出到传统的关系型数据库中。Sqoop用MapReduce导入导出数据,提供了平行化的快速操作,也具有容忍性。目标用户有:系统和应用项目、系统管理员、数据库管理员、数据分析师、数据工程师。
       从关系型数据库导入一个表到hadoop分布式文件管理系统。首先用JDBC接口连接数据库,表名,用户名,密码,目标目录,绝对路径,三个mapper。
       Sqoop不仅可以导入一个表,还可以通过列导入数据。只需在导入表的基础上添加字段即可。
Hadoop 系统分布式存储与并行计算框架

6、日志数据收集工具 Flume

       Flume是一种日志数据收集系统,可以把复杂来源的流日志导入到hadoop中,flume的特点是分布式、可靠性强、高效性,移动大量的数据到hadoop。Flume有一种简单的、方便的架构,允许在线分析应用程序,具有可调可靠性机制和许多故障转移和恢复机制的健壮性和容错能力。Flume的作用:从各种来源接收流数据到hadoop进行存储和分析;接收新的数据流并且添加到列。

7、ZooKeeper是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务。所有这些类型的服务以分布式应用程序以某种形式或另一种形式使用。每次执行它们时,都会有很多工作用于修复不可避免的错误和竞争条件。由于实施这些服务的困难,应用程序最初通常会吝啬,这使得它们在变化存在时变脆,难以管理。即使正确完成,这些服务的不同实现也会导致应用程序部署时的管理复杂性。

8 、MapReduce并行计算技术

       MapReduce计算模型,可以将大型数据操作的作业分解为多个数据块,每个数据块对应一个计算任务,并且自动调度计算几点来处理对应的数据块,这些处理是在集群中同时进行的。MapReduce计算是平行和分布式的,开发人员只需要专注于Map和Reduce函数的实现,MapReduce的底层是用Java编写的,但是也支持Python操作。
       InputSplit代表了数据处理一个单独的映射。块数据的物理表示。分割块数据的逻辑表示。nputSplit尊重逻辑记录边界。在Hadoop MapReduce执行扫描块和创建InputSplits和每个InputSplit将分配给单个映射器进行处理。
键和值类型必须是可序列化的,使用Hadoop Writable-based写数据的序列化机制的网络,优化网络序列化,有能力降低对象创建开销通过重用可写的对象,提供了一组基本类型IntWritable、LongWriteable、FloatWritable、DoubleWritable、BooleanWritable、文本、NullWritable等。容易创建自定义键值类型。

9、 MongoDB

       MongoDB是一个具有可扩展性和灵活性的文档数据库,可以查询和索引需要的数据,替代了以往采用行和列的形式作为关系型数据库。MongoDB中的一个记录是一个文档,它是由字段和值对组成的数据结构,相当于在键值存储方式和传统的关系型数据库之中搭建了一座桥梁。MongoDB文档JSON对象有些相似,因此可以存储复杂的数据类型。字段的值可能包括其他文档、数组和文档数组。MongoDB的特点是有丰富的查询语言、自动更新修饰符、文本搜索。MongoDB的分析框架和SQL组操作、MapReduce 的复杂数据分析有些相似。MongoDB内置的自动故障转移和复制功能大大提高了MongoDB的可用性。MongoDB对所有流行的编程语言和框架提供常用的驱动程序,使开发变得简单。
其主要功能特性有:
面向集合存储;
模式自由;
支持动态查询;
支持复制和故障恢复;
自动处理碎片;
支持PYTHON,JAVA,C++,PHP,C#等多种语言;
文件存储格式为BSON(一种JSON的扩展);

10、调度系统Yarn

       在一个集群上有很多工具工作,为了让程序有序运行,避免程序出现资源的调用问题,所以有了调度系统,现在最流行的调度系统是Yarn。在Hadoop中引入Yarn的好处是,集群在数据共享、资源统一管理、利用率方面有了显著的提升。Yarn减少了资源消耗,并且让监测每一个子任务状态的程序分布式化了,更安全。Yarn管理MapReduce的分布式计算、pig脚本、Hive的SQL查询、NoSQL的数据库、stome数据流、spark在内存的运行,还有其他的系统。

原创文章,作者:写文章小能手,如若转载,请注明出处:https://www.sbvv.cn/chachong/590.html,文章版权申述

(0)
上一篇 2017年9月3日 下午1:34
下一篇 2017年9月3日 下午1:45

相关推荐

My title page contents