赞
踩
目录
hadoop = MapReduce+HDFS(hadoop 文件系统)
进一步解释:
MapReduce是一个项目,HDFS是另一个项目,他们组成了hadoop。
实际上这两个项目与hadoop关系 ,好比 hadoop是计算机,而MapReduce是CPU,而HDFS是硬盘。
显而易见了,MapReduce处理数据,HDFS存储数据。
Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示:
数据采集工具:
日志收集框架: Flume 、 Logstash 、 Filebeat
数据迁移工具: Sqoop
数据存储工具:
分布式文件存储系统: Hadoop HDFS
数据库系统: Mongodb 、 HBase
数据处理工具:
分布式计算框架:
批处理框架:Hadoop MapReduce
流处理框架:Storm
混合处理框架:Spark 、 Flink
查询分析框架 : Hive 、 Spark SQL 、 Flink SQL 、 Pig 、 Phoenix
资源和任务管理:集群资源管理器 : Hadoop YARN
分布式协调服务: Zookeeper
任务调度框架: Azkaban 、 Oozie
集群部署和监控: Ambari 、 Cloudera Manager
上面列出的都是比较主流的大数据框架,社区都很活跃,学习资源也比较丰富。从 Hadoop 开始入门学习,因为它是整个大数据生态圈的基石,其它框架都直接或者间接依赖于 Hadoop 。
Hadoop可以按三种模式进行安装和运行。
(1)Hadoop的默认模式,安装时不需要修改配置文件。
(2)Hadoop运行在一台计算机上,不需要启动HDFS和YARN。
(3)MapReduce运行处理数据时只有一个JAVA进程,使用本地文件系统进行数据的输入输出。
(4)用于对MapReduce程序的逻辑进行调试,确保程序的正确。
(1)Hadoop安装在一台计算机上,需要修改相应的配置文件,用一台计算机模拟多台主机的集群。
(2)需要启动HDFS和YARN ,是相互独立的Java进程。
(3)MapReduce运行处理数据时是每个作业一个独立进程,输入输出使用分布式文件系统。
(4)用来进行学习和开发测试Hadoop程序的执行是否正确。
(1)在多台计算机上安装JDK和Hadoop ,组成相互连通的集群,需要修改相应的配置文件。
(2)Hadoop的守护进程运行在由多台主机搭建的集群上。真正的生产环境。
HDFS是一个基于 java 的 Hadoop 分布式文件系统(Hadoop Distributed File System),是 Hadoop 生态系统中最重要的组成部分。HDFS 是 Hadoop 的主要存储系统,为大数据提供可扩展的、高容错的、可靠的和具有成本效益的数据存储。HDFS 被设计用来部署在低廉的硬件上,在许多安装中已经被设为默认配置。它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。Hadoop 通过类似 shell 的命令与 HDFS 直接交互。
HDFS 有两个主要组件:NameNode 和 DataNode。
NameNode:NameNode 也被称为主节点,但它并不存储实际的数据或数据集。NameNode 存储的是元数据,即文件的权限、某一上传文件包含哪些 Block 块、Bolck 块保存在哪些 DataNode 上等细节信息。它由文件和目录组成。
NameNode 的任务:
DataNode:DataNode 负责将实际数据存储在 HDFS 中,并负责来自文件系统客户的读写请求。在启动时,每个 Datanode 连接到其相应的 Namenode 并进行握手。命名空间ID 和 DataNode 的软件版本的验证是通过握手进行的。当发现不匹配时,DataNode 会自动关闭。
DataNode 的任务:
MapReduce 是 Hadoop 生态系统的核心组件,提供数据处理。MapReduce 是一个软件框架,用于轻松编写应用程序,处理存储在 Hadoop 分布式文件系统中的大量结构化和非结构化数据。MapReduce 程序具有并行性质,因此对于使用集群的多台机器进行大规模数据分析非常有用,提高了计算速度和可靠性。MapReduce 的每个阶段都有键值对作为输入和输出。Map函数获取一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键/值对)。函数将 Map 的输出作为输入,并根据键来组合这些数据元组,相应地修改键的值。
MapReduce的特点:
YARN(Yet Another Resource Negotiator)作为一个 Hadoop 生态系统的组件,它提供了资源管理。Yarn 也是 Hadoop 生态系统中最重要的组件之一。YARN 被称为 Hadoop 的操作系统,因为它负责管理和监控工作负载。它允许多个数据处理引擎(如实时流和批处理)来处理存储在一个平台上的数据。
除了基本模块,Hadoop还包括以下项目:
Apache Hive是一个开源的数据仓库系统,用于查询和分析存储在 Hadoop 文件中的大型数据集。Hive主要做三个功能:数据汇总、查询和分析。Hive 使用的语言称为 HiveQL(HQL),与SQL类似。HiveQL 自动将类似 SQL 的查询翻译成 MapReduce 作业,并在Hadoop上执行。
Hive 的主要部分:
Apache Pig 是一个高级语言平台,用于分析和查询存储在 HDFS 中的巨大数据集。Pig 作为 Hadoop 生态系统的一个组成部分,使用 PigLatin 语言,它与 SQL 非常相似。它的任务包括加载数据,应用所需的过滤器并以所需的格式转储数据。对于程序的执行,Pig 需要 Java 运行环境。
Apache Pig 的特点:
Apache HBase 是 Hadoop 生态系统的一个组成部分,它是一个分布式数据库,被设计用来在可能有数十亿行和数百万列的表中存储结构化数据。HBase 是一个建立在 HDFS 之上,可扩展的、分布式的 NoSQL 数据库。HBase 提供实时访问 HDFS 中的数据的读取或写入。
HBase 有两个组件,即 HBase Master 和 RegionServer。
HBase Master
RegionServer
HCatalog 是 Hadoop 的一个表和存储管理层。HCatalog 支持 Hadoop 生态系统中的不同组件,如MapReduce、Hive 和 Pig,以方便从集群中读写数据。HCatalog 是 Hive的一个关键组件,使用户能够以任何格式和结构存储他们的数据。默认情况下,HCatalog 支持 RCFile、CSV、JSON、sequenceFile 和 ORC 文件格式。
Acro 是 Hadoop 生态系统的一部分,是一个最流行的数据序列化系统,为 Hadoop 提供数据序列化和数据交换服务。这些服务可以一起使用,也可以独立使用。大数据可以使用 Avro 交换用不同语言编写的程序。使用序列化服务,程序可以将数据序列化为文件或消息。它将数据定义和数据一起存储在一个消息或文件中,使得程序可以很容易地动态理解存储在 Avro 文件或消息中的信息。
Thrift 是一个用于可扩展的跨语言服务开发的软件框架,同时是一种用于 RPC(远程程序调用)通信的接口定义语言。Hadoop 做了大量的 RPC 调用,因此有可能出于性能或其他原因使用 Thrift。
Hadoop 生态系统组件的主要目的是大规模数据处理,包括结构化和半结构化数据。Apache Drill 是一个低延迟的分布式查询引擎,旨在扩展到几千个节点并查询 PB 级的数据。Drill 是第一个具有无模式模型的分布式 SQL 查询引擎。
Drill有专门的内存管理系统,可以消除垃圾回收,优化内存分配和使用。Drill 与 Hive 发挥得很好,允许开发者重用他们现有的 Hive 部署。
Apache Mahout 是用于创建可扩展的机器学习算法和数据挖掘库的开源框架。一旦数据被存储在 HDFS 中,Mahout 提供了数据科学工具来自动寻找这些大数据集中有意义的模式。
Mahout的算法包括:
Apache Sqoop 将数据从外部来源导入相关的 Hadoop 生态系统组件,如 HDFS、Hbase 或 Hive。它还可以将数据从 Hadoop 导出到其他外部来源。Sqoop 与关系型数据库一起工作,如 teradata、Netezza、oracle、MySQL。
Apache Sqoop的特点:
Apache Flume 有效地收集、汇总和移动大量的数据,并将其从原点送回 HDFS。它是容错和可靠的机制。Flume 允许数据从源头流入 Hadoop 环境。它使用一个简单的可扩展的数据模型,允许在线分析应用。使用 Flume,我们可以从多个服务器立即获得数据到 Hadoop。
Ambari 是一个用于配置、管理、监控和保护 apache Hadoop 集群的管理平台。由于 Ambari 提供了一致的、安全的操作控制平台,Hadoop 管理变得更加简单。
Ambari的特点:
Apache Zookeeper 用于维护配置信息、命名、提供分布式同步和提供组服务。Zookeeper 管理和协调一个大型的机器集群。
Zookeeper的特点
基于Hadoop开发出来的大数据平台,通常具有以下特点:
Hadoop生态缺点:
(一)平台基础
1.1 大数据
了解什么是大数据,大数据入门,以及大数据介绍。
以及大数据中存在的问题,包括存储,计算的问题,有哪些解决策略。
1.2 Hadoop平台生态圈
熟悉了解开源Hadoop平台生态圈,以及第三方大数据平台,查找一些Hadoop入门介绍博客或者官网,了解:
What’s Hadoop
Why Hadoop exists
How to Use Hadoop
1.3 Hadoop家族成员
Hadoop是一个庞大的家族,包含存储,计算等一系列产品组件,需要了解其中的一系列组件,包括HDFS,MapReduce,Yarn,Hive,HBase,ZooKeeper,Flume,Kafka,Sqoop,HUE,Phoenix,Impala,Pig,Oozie,Spark等,知道其干什么,维基百科定义。
1.4 HDFS
分布式存储HDFS,了解HDFS架构,HDFS的存储机制,各节点协作关系需理解清楚。
1.5 Yarn
分布式资源管理Yarn,熟悉Yarn架构,以及如何进行资源管理的机制。
1.6 MapReduce
分布式计算MapReduce,对MapReduce底层架构,处理方案进行了解,计算架构方案,了解MapReduce计算的优势,以及劣势。
1.7 HBase
大数据高效存储HBase,了解HBase底层架构,HBase的应用场景,存储方案。
1.8 Hive
大数据仓库Hive,了解Hive的存储机制,Hive的事务型变迁,Hive的应用场景,以及Hive底层计算。
1.9 Spark
内存计算平台Spark,熟悉Spark内存计算架构,计算流程,Spark的运行模式,以及应用场景。
(二)平台进阶
2.1 HDFS
通过命令行操作HDFS,文件查看,上传,下载,修改文件,赋权限等。
通过java demo连接操作HDFS,实现文件读取,上传,下载功能。
通过DI工具,配置HDFS操作流程,实现关系型数据库文件到HDFS存储,HDFS文件保存到本地目录中。
2.2 MapReduce
Eclipse绑定Hadoop环境,添加MapReduce Location,用eclipse运行MapReduce的经典实例WordCount,看其中原理,尝试修改为中文词汇统计,并排除不相关词汇。
2.3 Hive
通过命令行操作Hive,进行beeline连接,SQL语句操作Hive数据仓库。
通过java demo连接操作Hive,实现建表,插入数据,查询,删除数据记录,更新数据,删除表等操作。
通过DI工具,配置关系型数据库抽取到Hive事务表流程,不通过直接驱动连接Hive,通过HDFS以及Hive外表进行过度实现。
2.4 HBase
在命令行中访问操作使用HBase,建立列族,每列添加数据,修改更新数据查看变化。
通过java demo,用phoenix驱动,连接HBASE,实现对HBASE的建表,增删改查数据操作。
DI工具需要修改源码,或者添加phoenix组件,才能使用,因为phoenix插入语句不是Insert into,而是Upsert into,无法与DI工具匹配。
2.5 Spark
在命令行中,运行pyspark,以及spark shell,进行spark命令行操作,提交spark示例任务,进行试运行。
切换Spark运行模式,进行命令行尝试体验。
通过java demo连接Spark,进行任务的分发计算运行。
(三)平台高级
针对上述组件,进行熟练使用,熟能生巧,举一反三,能够根据场景编写MapReduce代码,Spark代码等,针对Hive,HBase深入理解支持的SQL类型,存储过程,触发器等如何进行操作,能够根据需求设计最优的解决方案。
(四)平台深度
深读组件源码,理解平台部署中各个配置的意义及影响,以及如何通过源码以及配置对组件进行优化,修改源码提高Hadoop平台的容错性,扩展性,稳定性等。
参考文献:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。