大数据概况及Hadoop生态系统总结

2022-08-30 21:57:05 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

觉得有帮助的,请多多支持博主,点赞关注哦~

文章目录

  • 大数据概况及Hadoop生态系统
    • 1、大数据概念理解
      • 1.1、什么是大数据?
      • 1.2、大数据特征(4V)?
      • 1.3、大数据应用场景?
      • 1.4、大数据部门业务流程分析?
      • 1.5、大数据部门组织结构?
      • 1.6、数据仓库与数据库的区别?
    • 2、职业简介
      • 2.1、大数据工程师
        • 2.1.1、简介
        • 2.1.2、职责
        • 2.1.3、所需技能
        • 2.1.4、工作方向
      • 2.2、大数据分析师
        • 2.2.1、简介
        • 2.2.2、职责
        • 2.2.3、所需技能
        • 2.2.4、工作方向
    • 3、什么是分布式计算?
    • 4、Hadoop深入理解
      • 4.1、什么是Hadoop?
      • 4.2、什么是Hadoop生态圈?
      • 4.3、Hadoop的发展及其版本?
        • 4.3.1、Hadoop 发展历史
        • 4.3.2、Hadoop 三大发行版本
      • 4.4、Hadoop的优点?
        • 4.4.1、Hadoop vs. RDBMS
      • 4.5、Hadoop 组成
        • 4.5.1、HDFS 架构概述
        • 4.5.2、YARN 架构概述
        • 4.5.3、MapReduce 架构概述
      • 4.6、Hadoop生态圈理解
        • 4.6.1、协调与管理(Coordination and Management)
          • 4.6.1.1、HCatalog
          • 4.6.1.2、Ambari
          • 4.6.1.3、Zookepper
        • 4.6.2、询问(Query)
          • 4.6.2.1、Impala
          • 4.6.2.2、Presto
          • 4.6.2.3、Hive
          • 4.6.2.4、Pig
        • 4.6.3、数据管道(Data piping)
          • 4.6.3.1、Sqoop
          • 4.6.3.2、Flume
        • 4.6.4、核心Hadoop(Core Hadoop)
          • 4.6.4.1、HDFS
          • 4.6.4.2、MapReduce
          • 4.6.4.3、Yarn
        • 4.6.5、机器学习(Machine Learning)
          • 4.6.5.1、Mahout
        • 4.6.6、NoSQL数据库(NoSQL Database)
          • 4.6.6.1、Hbase
        • 4.6.7、扩展
          • 4.6.7.1、Spark
          • 4.6.7.2、Tez
          • 4.6.7.3、Kafka
          • 4.6.7.4、Storm
          • 4.6.7.5、 Oozie
          • 4.6.7.6、R 语言
      • 4.7、Hadoop技术生态系统
        • 4.7.1、Zookeeper理解
        • 4.7.2、Hadoop架构理解
        • 4.7.2.1、HDFS 架构概述
        • 4.7.2.2、YARN 架构概述
        • 4.7.2.3、MapReduce 架构概述
      • 4.7、推荐系统框架图
      • 4.9、Hadoop前置配置
    • 5、Hadoop运行模式
      • 5.1、Hadoop本地模式配置
      • 5.2、Hadoop本地模式-wordcount测试
    • 6、日常的学习习惯

大数据概况及Hadoop生态系统

1、大数据概念理解

1.1、什么是大数据?

大数据(big data):指无法在一定时间范围内常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

主要解决:海量数据的存储和海量数据的分析计算问题。

按顺序给出数据存储单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。

换算:1Byte = 8bit 1K = 1024Byte 1MB = 1024K 1G = 1024M 1T = 1024G 1P = 1024T

代码语言:javascript复制
大数据是(我们无法在【一定时间内】用【常规的软件工具】 对内容进行【抓取、处理和运算】)的数据集合。
单位:MB、GB、TB、PB、EB等等。。

1.2、大数据特征(4V)?

4V特点:

  1. Volume(大量):截至目前,人类生产的所有印刷材料的数据量是200PB,而历史上全人类总共说过的话的数据量大约是5EB。当前,典型个人计算机硬盘的容量为TB量级,而一些大企业的数据量已经接近EB量级。
  2. Velocity(高速):这是大数据区分于传统数据挖掘的最显著特征。根据IDC的“数字宇宙”的报告,预计到2020年,全球数据使用量将达到35.2ZB。在如此海量的数据面前,处理数据的效率就是企业的生命。
  3. Variety(多样):这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以数据库/文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等,这些多类型的数据对数据的处理能力提出了更高要求。
  4. Value(低价值密度):价值密度的高低与数据总量的大小成反比。比如,在一天监控视频中,我们只关心健身那一分钟,如何快速对有价值数据“提纯”成为目前大数据背景下待解决的难题。
代码语言:javascript复制
1)数据量大:volume
2)速度快:velocity
3)多样性:variety
结构化:关系型数据
半结构化:xml、json格式
非结构化:用户行为日志、视频、音频、地理坐标。。。

1.3、大数据应用场景?

  1. 物流仓储:大数据分析系统助力商家精细化运营、提升销量、节约成本。
  2. 零售:分析用户消费习惯,为用户购买商品提供方便,从而提升商品销量。
  3. 旅游:深度结合大数据能力与旅游行业需求,共建旅游产业智慧管理、智慧服务和智慧营销的未来。
  4. 商品广告推荐:给用户推荐可能喜欢的商品。
  5. 保险:海量数据挖掘及风险预测,助力保险行业精准营销,提升精细化定价能力。
  6. 金融:多维度体现用户特征,帮助金融机构推荐优质客户,防范欺诈风险。
  7. 房产:大数据全面助力房地产行业,打造精准投策与营销,选出更合适的地,建造更合适的楼,卖给更合适的人。
  8. 人工智能
代码语言:javascript复制
1)电商零售行业
2)旅游行业
3)精细化产品推荐
4)金融产业
5)人工智能方向。。

1.4、大数据部门业务流程分析?

1.5、大数据部门组织结构?

代码语言:javascript复制
1)大数据平台运维:
平台软件(hadoop、spark、flink、kafka)的安装和维护
关于平台的性能的监测
平台的性能的调优
2)数据仓库组:
ETL工程师:数据清洗
Hive工程师:数据分析
3)数据挖掘组:
算法、建模
4)可视化组:
4.1)javaee同事完成,使用echarts
4.2)大数据可视化同事完成,使用kylin、kibina

1.6、数据仓库与数据库的区别?

2、职业简介

2.1、大数据工程师

2.1.1、简介

1)深刻理解统计学科的明星软件工程师。 2)是系统的构建者和优化者,是公司正常运营的基础之一。

2.1.2、职责

1)保证数据接收、转移的准确性、并且保证其它用户对数招的可访问性。 2)重点处理数据架构、计算、数据存储、数据流等。 3)负责数据库设计、存储数据库、建立数据库等。 4)负责对数据的可扩展性、可靠性、韧性、备份等

具备:相当强的编程能力-包括编写数据查询程序的能力。

2.1.3、所需技能

1)数学和统计学 2)程序设计和计算机科学 3)分析技能 4)商业战略

2.1.4、工作方向

1)大数据工程师

  1. 大数据销售、咨询
  2. 大数据调试工程师
  3. Hadoop大数据工程师
  4. 大数据产品经理
  5. 大数据运营经理

2)大数据高级工程师

  1. 大数据研发工程师
  2. 大数据平台开发工程师
  3. 大数据高级研发工程师
  4. 大数据高级研发工程师

3)大数据架构师

2.2、大数据分析师

2.2.1、简介

1)业务分析师、商业智能分析师、运营分析师、数据库分析师等。 2)能帮助企业做出基于数据的决策。

2.2.2、职责

从不同行业中获取数据,并通过获取到的数据对问题进行解答,并还需要以合适的方式对结果进行展示,以辅助企业做出商业决策。

2.2.3、所需技能

1)数学和统计学 2)程序设计和计算机科学 3)分析技能 4)商业战略

2.2.4、工作方向

1)大数据工程师

  1. 大数据销售、咨询
  2. 大数据调试工程师
  3. Hadoop大数据工程师
  4. 大数据产品经理
  5. 大数据运营经理

2)大数据高级工程师

  1. 大数据研发工程师
  2. 大数据平台开发工程师
  3. 大数据高级研发工程师
  4. 大数据高级研发工程师

3)大数据架构师

3、什么是分布式计算?

代码语言:javascript复制
【分布式】【计算】
将大量的数据切割成多个小部分的数据进行【并发】处理

传统分布式计算

新的分布式计算 – Hadoop

计算方式

将数据复制到计算节点移动数据

在不同数据节点并行计算 移动运算(实现本地化运算)

可处理数据量

小数据量

大数据量

CPU性能限制

受CPU限制较大

受单台设备限制小

提升计算能力

提升单台机器计算能力

扩展低成本服务器集群

4、Hadoop深入理解

4.1、什么是Hadoop?

1)Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。 2)主要解决,海量数据的存储和海量数据的分析计算问题。 3)广义上来说,HADOOP 通常是指一个更广泛的概念——HADOOP 生态圈。

代码语言:javascript复制
1)hadoop是【开源的】【分布式】的系统基础架构
2)有三个组成:
hdfs:分布式的文件系统,主要解决大数据的储存问题
mapreduce:分布式的批量计算
yarn:分布式的资源管理组件

4.2、什么是Hadoop生态圈?

4.3、Hadoop的发展及其版本?

代码语言:javascript复制
1)hadoop的作者:Doug cutting
2)hadoop的发行版本:
apache hadoop:最新版本(3.2.1 [2020/2/7]),授课使用稳定版本:2.7.7
cloudera:简称为CDH
Hortonworks:简称为HDP
4.3.1、Hadoop 发展历史

1)Lucene 是 Doug Cutting 开创的开源软件,用 java 书写代码,实现与 Google 类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 2)2001 年年底成为 Apache 基金会的一个子项目 3)对于大数量的场景,Lucene 面对与 Google 同样的困难 4)学习和模仿 Google 解决这些问题的办法 :微型版 Nutch 5)可以说 Google 是 hadoop 的思想之源(Google 在大数据方面的三篇论文) GFS —>HDFS Map-Reduce —>MR BigTable —>Hbase 6)2003-2004 年,Google 公开了部分 GFS 和 Mapreduce 思想的细节,以此为基础 Doug Cutting等人用了 2 年业余时间实现了 DFS 和 Mapreduce 机制,使 Nutch 性能飙升 7)2005 年 Hadoop 作为 Lucene 的子项目 Nutch 的一部分正式引入 Apache 基金会。2006 年3 月份,Map-Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中 8)名字来源于 Doug Cutting 儿子的玩具大象 9)Hadoop 就此诞生并迅速发展,标志这云计算时代来临

4.3.2、Hadoop 三大发行版本

Hadoop 三大发行版本:Apache、Cloudera、Hortonworks。 Apache 版本最原始(最基础)的版本,对于入门学习最好。 Cloudera 在大型互联网企业中用的较多。 Hortonworks 文档较好。 1)Apache Hadoop 官网地址:http://hadoop.apache.org/releases.html 下载地址:https://archive.apache.org/dist/hadoop/common/ 2)Cloudera Hadoop 官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html 下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/ (1)2008 年成立的 Cloudera 是最早将 Hadoop 商用的公司,为合作伙伴提供 Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。 (2)2009 年 Hadoop 的创始人 Doug Cutting 也加盟 Cloudera 公司。Cloudera 产品主要为 CDH,Cloudera Manager,Cloudera Support (3)CDH 是 Cloudera 的 Hadoop 发行版,完全开源,比 Apache Hadoop 在兼容性,安全性,稳定性上有所增强。 (4)Cloudera Manager 是集群的软件分发及管理监控平台,可以在几个小时内部署好一个 Hadoop 集群,并对集群的节点及服务进行实时监控。Cloudera Support 即是对 Hadoop 的技术支持。 (5)Cloudera 的标价为每年每个节点 4000 美元。Cloudera 开发并贡献了可实时处理大数据的 Impala 项目。 3)Hortonworks Hadoop 官网地址:https://hortonworks.com/products/data-center/hdp/ 下载地址:https://hortonworks.com/downloads/#data-platform (1)2011 年成立的 Hortonworks 是雅虎与硅谷风投公司 Benchmark Capital 合资组建。 (2)公司成立之初就吸纳了大约 25 名至 30 名专门研究 Hadoop 的雅虎工程师,上述工程师均在 2005 年开始协助雅虎开发 Hadoop,贡献了 Hadoop80%的代码。 (3)雅虎工程副总裁、雅虎 Hadoop开发团队负责人 Eric Baldeschwieler 出任 Hortonworks的首席执行官。 (4)Hortonworks 的主打产品是 Hortonworks Data Platform(HDP),也同样是 100%开源的产品,HDP 除常见的项目外还包括了 Ambari,一款开源的安装和管理系统。 (5)HCatalog,一个元数据管理系统,HCatalog 现已集成到 Facebook 开源的 Hive 中。Hortonworks 的 Stinger 开创性的极大的优化了 Hive 项目。Hortonworks 为入门提供了一个非常好的,易于使用的沙盒。 (6)Hortonworks 开发了很多增强特性并提交至核心主干,这使得 Apache Hadoop 能够在包括 Window Server 和 Windows Azure 在内的 microsoft Windows 平台上本地运行。定价以集群为基础,每 10 个节点每年为 12500 美元。

4.4、Hadoop的优点?

1)高可靠性:Hadoop 底层维护多个数据副本,所以即使 Hadoop 某个计算元素或存储出现故障,也不会导致数据的丢失。 2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。 3)高效性:在 MapReduce 的思想下,Hadoop 是并行工作的,以加快任务处理速度。 4)高容错性:能够自动将失败的任务重新分配。

代码语言:javascript复制
1)很强的扩展性,伸缩性
2)高可靠性:副本机制(容错)
3)低成本(底层硬件机器只要是廉价的PC机)
4)高性能存储、高性能的运算、高性能的资源的管理(原因:分布式)
5)支持数据结构很多样
结构化、半结构化、非结构化
4.4.1、Hadoop vs. RDBMS

Hadoop与关系型数据库对比

4.5、Hadoop 组成

①、在 Hadoop1.x 时代,Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源的调度,耦合性较大。

HDFS(数据存储)

Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。

MapReduce(资源调度 计算)

Hadoop MapReduce:一个分布式的资源调度和离线并行计算框架。

Common(辅助工具)

Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。

②、在 Hadoop2.x 时代,增加了 Yarn。Yarn 只负责资源的调度,MapReduce 只负责运算。

HDFS(数据存储)

Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。

MapReduce(计算)

Hadoop MapReduce:一个分布式的离线并行计算框架。

Yarn(资源调度)

Hadoop YARN:作业调度与集群资源管理的框架。

Common(辅助工具)

Hadoop Common:支持其他模块的工具模块 (Configuration、RPC、序列化机制、日志操作)。

4.5.1、HDFS 架构概述

1)NameNode(nn)(主节点):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。

3)Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

4.5.2、YARN 架构概述

1)ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;

2)NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;

3)ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。

4)Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

4.5.3、MapReduce 架构概述

MapReduce 将计算过程分为两个阶段:Map 和 Reduce 1)Map 阶段:并行处理输入数据 2)Reduce 阶段:对 Map 结果进行汇总

4.6、Hadoop生态圈理解

代码语言:javascript复制
1)协作和管理组件:
1.1)HCatalog是Hadoop的表存储管理工具。它将Hive Metastore的表格数据公开给其他Hadoop应
用程序。使得具有不同数据处理工具(Pig,MapReduce)的用户能够轻松将数据写入网格。它确保用户不必
担心数据存储在何处或以何种格式存储。
1.2)Zookeeper:是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、
分布式同步、组服务等。
1.3)Ambari:Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监
控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、
Sqoop和Hcatalog等
2)Core Hadoop:
2.1)HDFS:分布式的文件存储系统
2.2)MapReduce:分布式离线计算框架
2.3)Yarn:分布式资源管理
3)查询操作:
3.1)Presto:Presto一个交互式的查询引擎,基于内存实现低延时查询。
3.2)Pig:是基于sql脚本的一种数据流语言和运行环境,用于检索非常大的数据集。
3.3)Hive:hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存
储、
查询和分析存储在Hadoop中的大规模数据的机制
3.4)Impala:Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在
Hadoop的HDFS
和HBase中的PB级大数据
4)数据的导入导出工具:
4.1)Flume
4.2)Sqoop
5)基于Hadoop的机器学习:Mahout
6)Tez:是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和
Reduce
两个操作进一步拆分,提升处理速度。
7)Spark:Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎
4.6.1、协调与管理(Coordination and Management)
4.6.1.1、HCatalog

主要用来进行元数据管理。 概括来说,HCatalog 提供了一个统一的元数据服务,允许不同的工具如 Pig、MapReduce 等通过 HCatalog 直接访问存储在 HDFS 上的底层文件。

HCatalog 使用了 Hive 的元数据存储,这样就使得像 MapReduce 这样的第三方应用可以直接从 Hive 的数据仓库中读写数据。同时,HCatalog 还支持用户在 MapReduce 程序中只读取需要的表分区和字段,而不需要读取整个表。也就是提供一种逻辑上的视图来读取数据,而不仅仅是从物理文件的维度。

HCatalog 还提供了一个消息通知服务,这样对于 Oozie 这样的工作流工具,在数据仓库提供新数据时,可以通知到这些工作流工具

HCatalog 主要解决了这样一个问题:将以前各自为政的数据处理工具(如 Hive、Pig、MapReduce)有机的整合在一起,使其相互之间能够顺畅合作,进而提升效率。

4.6.1.2、Ambari

主要是基于web管理hadoop的工具。 Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。

Apache Ambari 支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。也是5个顶级hadoop管理工具之一

4.6.1.3、Zookepper

主要是配置信息数据同步。 Zookeeper 是 Google 的 Chubby 一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。

ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

4.6.2、询问(Query)
4.6.2.1、Impala

主要是基于内存运算,大平台,数据更快。 Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速

Impala支持内存中数据处理,它访问/分析存储在Hadoop数据节点上的数据,而无需数据移动。支持各种文件格式,如LZO、序列文件、Avro、RCFile和Parquet。

4.6.2.2、Presto

主要是基于sql语句。 Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏,⽀持任意数据源(通过扩展式Connector组件),数据量支持GB到PB字节。

4.6.2.3、Hive

主要是基于sql语句。 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。

其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

4.6.2.4、Pig

主要基于sql脚本。 Apache Pig是MapReduce的一个抽象。它是一个工具/平台,用于分析较大的数据集,并将它们表示为数据流。Pig通常与 Hadoop 一起使用;我们可以使用Apache Pig在Hadoop中执行所有的数据处理操作。

要编写数据分析程序,Pig提供了一种称为 Pig Latin 的高级语言。该语言提供了各种操作符,程序员可以利用它们开发自己的用于读取,写入和处理数据的功能。

要使用 Apache Pig 分析数据,程序员需要使用Pig Latin语言编写脚本。所有这些脚本都在内部转换为Map和Reduce任务。Apache Pig有一个名为 Pig Engine 的组件,它接受Pig Latin脚本作为输入,并将这些脚本转换为MapReduce作业。

优点:

  1. 不太擅长Java的程序员通常习惯于使用Hadoop,特别是在执行任一MapReduce作业时。Apache Pig是所有这样的程序员的福音。
  2. 使用 Pig Latin ,程序员可以轻松地执行MapReduce作业,而无需在Java中键入复杂的代码。
  3. Apache Pig使用多查询方法,从而减少代码长度。
4.6.3、数据管道(Data piping)
4.6.3.1、Sqoop

Sqoop 是一款开源的工具,主要用于在 Hadoop(Hive)与传统的数据库(mysql)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle 等)中的数据导进到Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。

4.6.3.2、Flume

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

4.6.4、核心Hadoop(Core Hadoop)
4.6.4.1、HDFS

Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。

HDFS (Hadoop Distributed File System)是Hadoop下的分布式文件系统,具有高容错(fault-tolerant)、高吞吐量(high throughput)等特性,可以部署在低成本(low-cost)的硬件上。

4.6.4.2、MapReduce

MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。

MapReduce1.0:一个分布式的资源调度和离线并行计算框架。

MapReduce2.1:一个分布式的离线并行计算框架。

4.6.4.3、Yarn

Hadoop YARN:作业调度与集群资源管理的框架。

Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。

4.6.5、机器学习(Machine Learning)
4.6.5.1、Mahout

Apache Mahout 是个可扩展的机器学习和数据挖掘库,当前 Mahout 支持主要的 4 个用例:

  1. 推荐挖掘:搜集用户动作并以此给用户推荐可能喜欢的事物。
  2. 聚集:收集文件并进行相关文件分组。
  3. 分类:从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确的归类。
  4. 频繁项集挖掘:将一组项分组,并识别哪些个别项会经常一起出现。
4.6.6、NoSQL数据库(NoSQL Database)
4.6.6.1、Hbase

HBase 是一个分布式的、面向列的开源数据库。

HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

4.6.7、扩展
4.6.7.1、Spark

Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。 现在形成一个高速发展应用广泛的生态系统。

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Spark 主要有三个特点 :

  1. 首先,高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身
  2. 其次,Spark 很快,支持交互式计算和复杂算法
  3. 最后,Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。
4.6.7.2、Tez

Tez是一个Apache的开源项目,意在构建一个应用框架,能通过复杂任务的DAG来处理数据。它是基于当前的Hadoop Yarn之上,换句话就是Yarn为其提供资源。

Tez主要的两个设计目标:

  1. 增强终端用户使用 : 灵活的数据流定义API;灵活的输入输出运行时模型(强调处理模型);数据类型无关;简洁部署 。
  2. 高性能执行 : 通过MapReduce提高性能;资源优化管理;执行时计划重定义;物理数据流的动态决策 。
4.6.7.3、Kafka

Kafka 是一种高吞吐量的分布式发布订阅消息系统,有如下特性: (1)通过 O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB 的消息存储也能够保持长时间的稳定性能。 (2)高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒数百万的消息。 (3)支持通过 Kafka 服务器和消费机集群来分区消息。 (4)支持 Hadoop 并行数据加载。

4.6.7.4、Storm

Storm 为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。

Storm 也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。

4.6.7.5、 Oozie

Oozie 是一个管理 Hdoop 作业(job)的工作流程调度管理系统。

Oozie 协调作业就是通过时间(频率)和有效数据触发当前的 Oozie 工作流程。

4.6.7.6、R 语言

R 是用于统计分析、绘图的语言和操作环境。R 是属于 GNU 系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

4.7、Hadoop技术生态系统

一、

二、

代码语言:javascript复制
1)Sqoop:sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
2)Flume:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
3)Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
(1)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
(3)支持通过Kafka服务器和消费机集群来分区消息。
(4)支持Hadoop并行数据加载。
4)Flink:Flink为分布式实时计算,可被用于“流处理”之中,实时处理消息并更新数据库。
5)Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
6)Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。Oozie协调作业就是通过时间(频率)和有效数据触发当前的Oozie工作流程。
7)Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合
于非结构化数据存储的数据库。
8)Hive:hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
9)Mahout:
Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用例:
推荐挖掘:搜集用户动作并以此给用户推荐可能喜欢的事物。
聚集:收集文件并进行相关文件分组。
分类:从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确的归类。
频繁项集挖掘:将一组项分组,并识别哪些个别项会经常一起出现。
10)ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
4.7.1、Zookeeper理解
代码语言:javascript复制
Zookeeper是一个【分布式】应用程序的协调服务框架。
主要作用是:解决【分布式集群】中应用系统的【一致性问题】。
提供的功能:
配置管理、分布式同步、集群管理、命名服务、队列管理等。
4.7.2、Hadoop架构理解

①、在 Hadoop1.x 时代,Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源的调度,耦合性较大。

HDFS(数据存储)

Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。

MapReduce(资源调度 计算)

Hadoop MapReduce:一个分布式的资源调度和离线并行计算框架。

Common(辅助工具)

Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。

②、在 Hadoop2.x 时代,增加了 Yarn。Yarn 只负责资源的调度,MapReduce 只负责运算。

HDFS(数据存储)

Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。

MapReduce(计算)

Hadoop MapReduce:一个分布式的离线并行计算框架。

Yarn(资源调度)

Hadoop YARN:作业调度与集群资源管理的框架。

Common(辅助工具)

Hadoop Common:支持其他模块的工具模块 (Configuration、RPC、序列化机制、日志操作)。

4.7.2.1、HDFS 架构概述

1)NameNode(nn)(主节点):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。

3)Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

代码语言:javascript复制
1)NameNode:主节点 (教员)
存储文件的元数据,包含:
1.1)文件信息:文件名、文件目录结构、文件属性(生成时间、副本数文件权限等)
1.2)文件块列表信息
1.3)块所在的位置:块所在的DataNode列表的信息
2)Secondary NameNode:备份Namenode,辅助Namenode工作 (助教)
3)DataNode:数据节点 (学生)
3.1)存储数据内容
3.2)存储数据的说明信息--》元数据
元数据:数据块的长度、块数据的校验信息、时间戳
元数据:类似mysql的表格式,但不需要提前建表
customer.csv,/project1/input/data/customer.csv,2020/2/10 11:24:11,3,rw-
/project1/input/data
/customer.csv
/output
customer.csv(大小129M,在hadoop2.x版本,默认每块文件大小128M,切成了2块【128M,1M】)
4.7.2.2、YARN 架构概述

1)ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;

2)NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;

3)ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。

4)Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

4.7.2.3、MapReduce 架构概述

MapReduce 将计算过程分为两个阶段:Map 和 Reduce 1)Map 阶段:并行处理输入数据 2)Reduce 阶段:对 Map 结果进行汇总

4.7、推荐系统框架图

4.9、Hadoop前置配置

代码语言:javascript复制
1)用户管理:自定义一个用户、使该用户具备超级管理员的权限[root]
	1.1)创建用户 
	1.2)修改密码 
	1.3)设置超级管理员权限 /etc/sudoers
2)设置固定的ip地址 【使用新用户】
	vi /etc/sysconfig/network-scripts/ifcfg-eth0
	注意:ipaddr 网址;gateway:网关;onboot:自动加载网卡信息;DNS1:域名解析器
3)设置主机名:【使用新用户】
	3.1)临时:电脑重启会失效
		hostname :查看主机名
		sudo hostname 新的主机名
	3.2)永久有效:
		sudo vi /etc/sysconfig/network
		在文件的尾部追加一行:HOSTNAME=新的主机名
		比如:HOSTNAME=os1
4)关闭防火墙
	centos6
	临时:sudo service iptables stop
	永久:sudo chkconfig iptables off(关闭)
	centos7
	关闭:systemctl stop firewalld.service
	禁止开机自启:systemctl disable firewalld.service
5)配置SSH:
	提醒:集群包含N节点,N个节点间为了进行数据的读取或写入,需要相互通信,各个节点的访问权限问题:实现明文输入密码,比如os2节点访问os2节点,输入密码
	最终的解决方案:各个节点的【免密登录】
	密码(公钥、私钥)
	**目标:为了os2能免密访问os1
	os1(生成一个密码:存私钥) os2(存os1的公钥)
	当os2访问os1的时候:os2会把"os1的公钥"发送给os1,os1将自己的私钥和接收到的公钥组合,测试
5.1)检查是否已经安装了ssh
	rpm -qa | grep ssh
5.2) sshd服务是否开启
	sudo service sshd status
5.3)生成秘钥
	ssh-keygen -t rsa
5.4)公钥的复制
	ssh-copy-id os1
5.5)测试是否成功!
	ssh os1
6)修改/opt/model 文件夹的所有者为自定义用户:
	sudo chown -R hadoopenv:hadoopenv model

5、Hadoop运行模式

  1. 本地模式
  2. 伪分布式 一台模拟
  3. 完全分布式 生产环境、Hadoop集群、多台

5.1、Hadoop本地模式配置

代码语言:javascript复制
1.修改ip: 
	vi /etc/sysconfig/network-scripts/ifcfg-ens33

2.修改network: 
	vi /etc/sysconfig/network

 	NETWORKING=yes
 	HOSTNAME=主机名

3.修改resolv.conf: 
	vi /etc/resolv.conf

	nameserver 114.114.114.114

4.重启网卡:
	service network restart


5.创建目录:
	mkdir -p /opt/software
	mkdir -p /opt/model

6.创建用户组和用户
	groupadd -g 1111 hadoopenv
	useradd -m -u 1111 -g hadoopenv hadoop01
	passwd hadoop01

7.修改权限:
	chmod 777 /etc/sudoers
	hadoop01 ALL=(ALL)NOPASSWD:ALL
	chmod 440 /etc/sudiers

8.进入用户,并修改目录权限
	su hadoop01
	cd /opt/model
	sudo chown -R 1111:1111 model
	sudo chown -R 1111:1111 software

8.5.修改hosts
	vi /etc/hosts

	ip 主机名

9.安装jdk
	cd /opt/software
	rz
	tar -zxvf jdk -C ../model
	cd ../model
	mv jdk jdk1.8

10.配置环境变量并检查
	sudo vi /etc/profile
	
	export JAVA_HOME=/opt/model/jdk1.8
	export CLASSPATH=.:$JAVA_HOME/lib
	export PATH=$PATH:$JAVA_HOME/bin
	
	java -version
	echo $JAVA_HOME
	which java
	
11.SSH免密登录
	rpm -qa | grep ssh
	service sshd status
	ssh-keygen -t rsa
	cd ~/.ssh
	ssh-copy-id -i ./id_rsa.pub 主机名
	ssh 主机名

12.下载解压hadoop
	cd /opt/software
	rz
	tar -zxvf hadoop -C ../model

13.修改环境变量
	sudo vim /etc/profile

	export JAVA_HOME=/opt/model/jdk1.8
	export CLASSPATH=.:$JAVA_HOME/lib
	export HADOOP_HOME=/opt/model/hadoop-2.7.7
	export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

	source /etc/profile
	hadoop version

5.2、Hadoop本地模式-wordcount测试

可见,hadoop中存在许多测试用例。

代码语言:javascript复制
# 测试wordcount方法
[hadooptest@biubiubiu model]$ hadoop jar /opt/model/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount ./localtest.txt output/wordcounttest2
代码语言:javascript复制
# 测试官网实例grep方法
[hadooptest@biubiubiu model]$ hadoop jar /opt/model/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep ./localtest.txt output/greptest2 'df[a-z]'

6、日常的学习习惯

代码语言:javascript复制
1)时间观念
2)执行力、细节
3)逐渐培养,解决问题的能力
建议:错题的笔记,日常的出错的日志、截图
4)增强阅读能力,看技术性的文章,增强知识面
5)待人热情

觉得有帮助的,请多多支持博主,点赞关注哦~

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144553.html原文链接:https://javaforall.cn

0 人点赞