大家好,又见面了,我是你们的朋友全栈君。
觉得有帮助的,请多多支持博主,点赞关注哦~
文章目录
- 大数据概况及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、工作方向
- 2.1、大数据工程师
- 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.6.1、协调与管理(Coordination and Management)
- 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、日常的学习习惯
- 1、大数据概念理解
大数据概况及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特点:
- Volume(大量):截至目前,人类生产的所有印刷材料的数据量是200PB,而历史上全人类总共说过的话的数据量大约是5EB。当前,典型个人计算机硬盘的容量为TB量级,而一些大企业的数据量已经接近EB量级。
- Velocity(高速):这是大数据区分于传统数据挖掘的最显著特征。根据IDC的“数字宇宙”的报告,预计到2020年,全球数据使用量将达到35.2ZB。在如此海量的数据面前,处理数据的效率就是企业的生命。
- Variety(多样):这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以数据库/文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等,这些多类型的数据对数据的处理能力提出了更高要求。
- Value(低价值密度):价值密度的高低与数据总量的大小成反比。比如,在一天监控视频中,我们只关心健身那一分钟,如何快速对有价值数据“提纯”成为目前大数据背景下待解决的难题。
1)数据量大:volume
2)速度快:velocity
3)多样性:variety
结构化:关系型数据
半结构化:xml、json格式
非结构化:用户行为日志、视频、音频、地理坐标。。。
1.3、大数据应用场景?
- 物流仓储:大数据分析系统助力商家精细化运营、提升销量、节约成本。
- 零售:分析用户消费习惯,为用户购买商品提供方便,从而提升商品销量。
- 旅游:深度结合大数据能力与旅游行业需求,共建旅游产业智慧管理、智慧服务和智慧营销的未来。
- 商品广告推荐:给用户推荐可能喜欢的商品。
- 保险:海量数据挖掘及风险预测,助力保险行业精准营销,提升精细化定价能力。
- 金融:多维度体现用户特征,帮助金融机构推荐优质客户,防范欺诈风险。
- 房产:大数据全面助力房地产行业,打造精准投策与营销,选出更合适的地,建造更合适的楼,卖给更合适的人。
- 人工智能
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)大数据工程师
- 大数据销售、咨询
- 大数据调试工程师
- Hadoop大数据工程师
- 大数据产品经理
- 大数据运营经理
2)大数据高级工程师
- 大数据研发工程师
- 大数据平台开发工程师
- 大数据高级研发工程师
- 大数据高级研发工程师
3)大数据架构师
2.2、大数据分析师
2.2.1、简介
1)业务分析师、商业智能分析师、运营分析师、数据库分析师等。 2)能帮助企业做出基于数据的决策。
2.2.2、职责
从不同行业中获取数据,并通过获取到的数据对问题进行解答,并还需要以合适的方式对结果进行展示,以辅助企业做出商业决策。
2.2.3、所需技能
1)数学和统计学 2)程序设计和计算机科学 3)分析技能 4)商业战略
2.2.4、工作方向
1)大数据工程师
- 大数据销售、咨询
- 大数据调试工程师
- Hadoop大数据工程师
- 大数据产品经理
- 大数据运营经理
2)大数据高级工程师
- 大数据研发工程师
- 大数据平台开发工程师
- 大数据高级研发工程师
- 大数据高级研发工程师
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作业。
优点:
- 不太擅长Java的程序员通常习惯于使用Hadoop,特别是在执行任一MapReduce作业时。Apache Pig是所有这样的程序员的福音。
- 使用 Pig Latin ,程序员可以轻松地执行MapReduce作业,而无需在Java中键入复杂的代码。
- 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 个用例:
- 推荐挖掘:搜集用户动作并以此给用户推荐可能喜欢的事物。
- 聚集:收集文件并进行相关文件分组。
- 分类:从现有的分类文档中学习,寻找文档中的相似特征,并为无标签的文档进行正确的归类。
- 频繁项集挖掘:将一组项分组,并识别哪些个别项会经常一起出现。
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 主要有三个特点 :
- 首先,高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身。
- 其次,Spark 很快,支持交互式计算和复杂算法。
- 最后,Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。
4.6.7.2、Tez
Tez是一个Apache的开源项目,意在构建一个应用框架,能通过复杂任务的DAG来处理数据。它是基于当前的Hadoop Yarn之上,换句话就是Yarn为其提供资源。
Tez主要的两个设计目标:
- 增强终端用户使用 : 灵活的数据流定义API;灵活的输入输出运行时模型(强调处理模型);数据类型无关;简洁部署 。
- 高性能执行 : 通过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运行模式
- 本地模式
- 伪分布式 一台模拟
- 完全分布式 生产环境、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