irpas技术客

Hadoop大数据技术课程总结2021-2022学年第1学期_IT从业者张某某_大数据课程总结

irpas 7096

文章目录 Hadoop大数据技术课程总结1.大数据概述1.1大数据时代的4V1.2大数据时代的三次浪潮1.3大数据时代的技术支撑1.4谷歌的3篇论文1.5Hadoop集群规模1.6Hadoop安装过程 2.HDFS专题2.1 HDFS简介及作用2.2 HDFS架构2.3HDFS服务角色2.4 HDFS 如何读取文件2.5 HDFS 如何写文件2.6HDFS 副本存放策略2.7HDFS基本命令 3.MapReduce专题3.1.三个层面上的基本构思3.2.一个MapReduce的完整过程3.3.MR的shuffle环节3.4.MR的编程 4.Yarn专题4.1.yarn简介4.2.yarn架构与服务角色4.3.Scheduler调度器4.4.YARN 作业执行流程 5.HIVE专题5.1HIVE简介5.2HIVE如何执行一条HQL语句5.3HIVE数据存储5.4HIVE常用语句 6.Zookeeper专题6.1 Zookeeper概念6.2 Zookeeper应用场景6.3 Zookeeper原理6.4 Zookeeper实现服务动态上下线通知原理6.5 Zookeeper实现分布式锁原理6.6 Zookeeper常用命令 7 Flume专题7.1Flume简介7.2 Sources,Channels,Sinks配置7.3 可靠性7.4 可恢复性7.5 Flume配置文件与用法举例

Hadoop大数据技术课程总结 1.大数据概述 1.1大数据时代的4V

数据量大Volume 第一个特征是数据量大。大数据的起始计量单位可以达到P(1000个T)、E(100万个T)或Z(10亿个T)级别。 类型繁多(Variety) 第二个特征是数据类型繁多。包括网络日志、音频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。 价值密度低(Value) 第三个特征是数据价值密度相对较低。如随着物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低,如何通过强大的机器算法更迅速地完成数据的价值"提纯",是大数据时代亟待解决的难题。 速度快、时效高(Velocity) 第四个特征是处理速度快,时效性要求高。这是大数据区分于传统数据挖掘最显著的特征。既有的技术架构和路线,已经无法高效处理如此海量的数据,而对于相关组织来说,如果投入巨大采集的信息无法通过及时处理反馈有效信息,那将是得不偿失的。可以说,大数据时代对人类的数据驾驭能力提出了新的挑战,也为人们获得更为深刻、全面的洞察能力提供了前所未有的空间与潜力。

1.2大数据时代的三次浪潮

第一波浪潮 第一波浪潮起源于90年代,当时从计算机到软件大多还是企业级的,而数据分析就已经开始,这个时代也还是集中式软件时代,存储数据的成本也非常昂贵,所以大部分企业以KPI角度,抽取少量结构化数据,采取特定数据。代表企业如MicroStrategy、Microsoft、Oracle,代表产品诸如Sybase、Congos。这个时代能产生的数据有限,能处理数据的能力有限。 第二波浪潮 发展到2000年左右,互联网的兴起,带动了计算机和软件从工具型走向消费级,由于互联网基础设施的发展,以下三点带来了数据的爆发式增长。1) 网络带宽的升级优化,从2g到4g,从拨号上网到光纤入户。2) 围绕互联网信息化带来大量的数据产生,如门户网站,社交平台,内容和视频平台等。3) 科技发展,从PC到移动设备到各种智能设备,都可以采集传输数据。数据的存储成本越来越低,数据的产生速度越来越快,数据量越来越大,第一波浪潮时的技术体系无法满足需求,并且由于摩尔定律基础硬件设备和条件也在优化,处理数据的能力越来越强,此时带来了大数据平台第二波浪潮的发展: 第三波浪潮 发展到2010左右,互联网发展从信息化走向了服务化,创业方向也从之前的“门户时代”、“社交时代”,“垂直化门户时代”,“内容视频时代”走向了电商、 出行、外卖、O2O等本地服务。如果说面向信息化的时代更多的是基于流量广告等商业模式,面向服务化时代更多的是直接面对客户价值的变现商业模式,或者说 消费者服务,所以从行业发展来看,服务类对分析的需求也要旺盛很多。我们可以用破木桶蓄水过程来类比,到处都是水源的时候,并且外部水源流入率大于自身流失率的时候,更多的思考的是抓紧圈水源而不是找短板。从2000年到2014年,流量势头猛进,到处都是用户,对于企业而言更多的思考是如何圈用户,而不是如何留住用户并去分析流失原因。当外部没有更多水源进入并且四处水源有限的时候,我们需要的是尽可能修复木桶,并且找到木桶的短板。在2014到2015年之间,互联网流量红利也初现消退 之势,国内的经济下行压力也逐渐增大,就好比水源有限一样,企业更多的需要分析自身原因了,去提高各种转化率,增加用户的忠诚度和黏性,减少用户的流失。 因此分析需求开始逐步提升,各个业务部门也都需要自我分析优化成本,提高产出和利润。过去企业更多面临的是由上而下的KPI中心化式分析,形成了分析中心化体系,基本上整个公司有统一关注的指标和数据看板,但是各业务部门的分析需要单独处理。数据分析从行业、角色、部门和场景而言,都是差异化的。比如行业上,电商关注的是购买相关指标,内容关注的是阅读相关指标,社交关注的是参与度相关指标,工 具关注的是功能使用情况。角色上,CEO关注的是整体、财务各部门的KPI;市场VP关注的是营销相关的子项目KPI;销售VP关注的是销售阶段状态和结果相关的指标;如部门上,市场关注的是投放转化率等指标;产品关注的是功能留存率等指标。如果要更充分的满足分析需求,需要从KPI中心化分析转向分析去 中心化,也就面临着又一次大数据平台的技术革新,也因此推动了大数据平台第三波浪潮的变革。

1.3大数据时代的技术支撑

虚拟化和云计算技术 美国国家标准技术研究所认为,云计算是通过网络使得一组可配置的计算资源(例如网 络、计算机、存储、应用程序、服务等)能够在任何地点进行访问的模型,资源的提供和 释放可以快速完成,管理开销低,与提供商的交互简便易行。 云计算的关键技术有三大点:⑴虚拟化技术:云计算的虚拟化技术不同于传统的单一虚拟化,它是涵盖整个IT架构的,包括资 源、网络、应用和桌面在内的全系统虚拟化。⑵分布式资源管理技术:信息系统仿真系统在大多数情况下会处在多节点并发执行环境中,要保证 系统状态的正确性,必须保证分布数据的一致性。⑶并行编程技术:云计算采用并行编程模式。在并行编程模式下,并发处理、容错、数据分布、负 载均衡等细节都被抽象到一个函数库中,通过统一接口,用户大尺度的计算任务被自动并发和分布 执行,即将一个任务自动分成多个子任务,并行地处理海量数据。 基于分布式的Hadoop生态系统 分布式计算的产生:单台计算机的能力是有限的,而需要处理的问题规模在不断地增长。为此,人们开始探索用多台计 算机组成一个系统进行协同处理。因此遇到很多新问题: 网络带宽有限 当部分机器出现故障时,我们希望多机系统作为一个整体还能正常工作用户编写的程序要同时在不同的机器上运行,还要确保能够容易使用分布式计算就是为了解决这些问题而出现的。Hadoop生态系统:主流的开源分布式大数据处理软件,主要用Java语言编写,具有较好的平台移植性。关于Hadoop有几个概念需要理解清楚: HDFS 是Hadoop的分布式文件系统 MapReduce是Hadoop的一代计算资源管理和调度系统。YARN是Hadoop的二代计算资源管理和调度系统,接受任务请求,并根据请求的需要来分配 资源,调度任务的执行。除了可以执行MapReduce外,还可以执行MPI等传统并行程序。HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实 现的编程语言为 Java。它是Hadoop项目的一部分,运行于HDFS文件系统之上。Hive和Pig能让用户用较为简便的方式来查询保存在HDFS或HBase中的数据。 Mahout是用Hadoop实现的机器学习算法库,包括聚类、分类、推荐,以及线性代数中的一 些常用算法。 Spark是比MapReduce更丰富灵活的计算框架,由Scala语言编写。设计核心是一种叫做可靠 分布式数据集。 NoSQL NoSQL数据库比SQL更满足Web应用对数据规模和读写性能的要求。 常见的NoSQL数据库大致可分为以下几类:基于列的存储,例如HBase、Cassandra等等 基于文档的存储,例如MongoDB、CouchDB等 键值对存储,分三种类型:

1.4谷歌的3篇论文

GFS :分布式文件系统 MapReduce :分布式计算引擎 BigTable :分布式列族数据库

1.5Hadoop集群规模

注意:本部分数据来源于网络,数据时间较久,但也足以说明问题。 1.百度 百度在2006年就开始关注Hadoop并开始调研和使用,在2012年其总的集群规模达到近十个。单集群超过2800台机器节点,Hadoop机器总数有上万台机器,总的存储容量超过100PB,已经使用的超过74PB,每天提交的作业数目有数千个之多,每天的输入数据量已经超过7500TB,输出超过1700TB。 百度的Hadoop集群为整个公司的数据团队、大搜索团队、社区产品团队、广告团队,以及LBS团体提供统一的计算和存储服务,主要应用包括: 数据挖掘与分析 日志分析平台 数据仓库系统 推荐引擎系统 用户行为分析系统 同时百度在Hadoop的基础上还开发了自己的日志分析平台、数据仓库系统,以及统一的C++编程接口,并对Hadoop进行深度改造,开发了HadoopC++扩展HCE系统。

2.阿里巴巴(旧的数据,现在已转而使用阿里云了) 阿里巴巴的Hadoop集群截至2012年大约有3200台服务器,大约30?000物理CPU核心,总内存100TB,总的存储容量超过60PB,每天的作业数目超过150?000个,每天hivequery查询大于6000个,每天扫描数据量约为7.5PB,每天扫描文件数约为4亿,存储利用率大约为80%,CPU利用率平均为65%,峰值可以达到80%。阿里巴巴的Hadoop集群拥有150个用户组、4500个集群用户,为淘宝、天猫、一淘、聚划算、CBU、支付宝提供底层的基础计算和存储服务,主要应用包括: 数据平台系统 搜索支撑 广告系统 数据魔方 量子统计 淘数据 推荐引擎系统 搜索排行榜 为了便于开发,其还开发了WebIDE继承开发环境,使用的相关系统包括:Hive、Pig、Mahout、Hbase等。

3.腾讯 腾讯也是使用Hadoop最早的中国互联网公司之一,截至2012年年底,腾讯的Hadoop集群机器总量超过5000台,最大单集群约为2000个节点,并利用Hadoop-Hive构建了自己的数据仓库系统TDW,同时还开发了自己的TDW-IDE基础开发环境。腾讯的Hadoop为腾讯各个产品线提供基础云计算和云存储服务,其支持以下产品:

腾讯社交广告平台。 搜搜(SOSO)。 拍拍网。 腾讯微博。 腾讯罗盘。 QQ会员。 腾讯游戏支撑。 QQ空间。 朋友网。 腾讯开放平台。 财付通。 手机QQ。 QQ音乐。 4.奇虎360 奇虎360主要使用Hadoop-HBase作为其搜索引擎so.com的底层网页存储架构系统,360搜索的网页可到千亿记录,数据量在PB级别。截至2012年年底,其HBase集群规模超过300节点,region个数大于10万个,使用的平台版本如下。 HBase版本:facebook0.89-fb。 HDFS版本:facebookHadoop-20。 奇虎360在Hadoop-HBase方面的工作主要为了优化减少HBase集群的启停时间,并优化减少RS异常退出后的恢复时间。

5.华为

华为公司也是Hadoop主要做出贡献的公司之一,排在Google和Cisco的前面,华为对Hadoop的HA方案,以及HBase领域有深入研究,并已经向业界推出了自己的基于Hadoop的大数据解决方案。

6.中国移动 中国移动于2010年5月正式推出大云BigCloud1.0,集群节点达到了1024。中国移动的大云基于Hadoop的MapReduce实现了分布式计算,并利用了HDFS来实现分布式存储,并开发了基于Hadoop的数据仓库系统HugeTable,并行数据挖掘工具集BC-PDM,以及并行数据抽取转化BC-ETL,对象存储系统BC-ONestd等系统,并开源了自己的BC-Hadoop版本。

中国移动主要在电信领域应用Hadoop,其规划的应用领域包括: 经分KPI集中运算。 经分系统ETL/DM。 结算系统。 信令系统。 云计算资源池系统。 物联网应用系统。 E-mail。 IDC服务等。

7.Facebook Facebook使用Hadoop存储内部日志与多维数据,并以此作为报告、分析和机器学习的数据源。目前Hadoop集群的机器节点超过1400台,共计11200个核心CPU,超过15PB原始存储容量,每个商用机器节点配置了8核CPU,12TB数据存储,主要使用StreamingAPI和JavaAPI编程接口。Facebook同时在Hadoop基础上建立了一个名为Hive的高级数据仓库框架,Hive已经正式成为基于Hadoop的Apache一级项目。此外,还开发了HDFS上的FUSE实现。

1.6Hadoop安装过程

1)安装centos7或ubuntu16.04系统 2)修改 IP 3)修改 host 主机名 4)配置 SSH 免密码登录 5)关闭防火墙 6)安装 JDK 7)解压 hadoop 安装包 8)配置 hadoop 的核心文件 hadoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml 9)配置 hadoop 环境变量 10)格式化 hadoop namenode-format 11)启动节点 start-all.sh

2.HDFS专题

参考: https://blog.csdn.net/weixin_38750084/article/details/82963235 https://·blogs.com/cjsblog/p/8168642.html https://·blogs.com/linbingdong/p/6253479.html

ZAB算法: 参考:https://blog.csdn.net/liuchang19950703/article/details/111406622

6.4 Zookeeper实现服务动态上下线通知原理

如图:

6.5 Zookeeper实现分布式锁原理

如图:

6.6 Zookeeper常用命令

1、zk服务命令

启动ZK服务: bin/zkServer.sh start查看ZK服务状态: bin/zkServer.sh status停止ZK服务: bin/zkServer.sh stop重启ZK服务: bin/zkServer.sh restart连接服务器: zkCli.sh -server 127.0.0.1:2181

2、连接zk 启动ZooKeeper服务之后,我们可以使用如下命令连接到 ZooKeeper 服务: eg、zookeeper-3.4.8\bin>zkCli.cmd -server 127.0.0.1:2181

Linux环境下: eg、zkCli.sh -server 127.0.0.1:2181

连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息,如下:

3、zk客户端命令 我们可以使用 help命令来查看帮助: 命令行工具的一些常用操作命令如下: 1.ls – 查看某个目录包含的所有文件,例如: [zk: 127.0.0.1:2181(CONNECTED) 1] ls / 2.ls2 – 查看某个目录包含的所有文件,与ls不同的是它查看到time、version等信息,例如: [zk: 127.0.0.1:2181(CONNECTED) 1] ls2 / 3.create – 创建znode,并设置初始内容,例如: [zk: 127.0.0.1:2181(CONNECTED) 1] create /test “test” Created /test 创建一个新的 znode节点“ test ”以及与它关联的字符串 4.get – 获取znode的数据,如下: [zk: 127.0.0.1:2181(CONNECTED) 1] get /test 5.set – 修改znode内容,例如: [zk: 127.0.0.1:2181(CONNECTED) 1] set /test “ricky” 6.delete – 删除znode,例如: [zk: 127.0.0.1:2181(CONNECTED) 1] delete /test 7.quit – 退出客户端 8.help – 帮助命令

7 Flume专题 7.1Flume简介

Flume是一种分布式的、可靠的、可用的服务,用于高效地收集、聚合和移动大量的日志数据。它具有基于流数据流的简单而灵活的架构。它具有可调的可靠性机制和许多故障转移和恢复机制,具有健壮性和容错能力。它使用一个简单的可扩展数据模型,允许在线分析应用程序。 Flume中的数据传递被称为event事件,event就是数据流单元。Flume中的agent被称为代理,agent的本质是一个(JVM)进程,每个agent中包含了source,channel,sink这几个组件,这些组件会把数据从一个地方(source)采集到目的地(sink)中(被称为一个hop,跳)。

7.2 Sources,Channels,Sinks配置

Flume的source配置,见 http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#flume-sources

Flume的channel配置,见 http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#flume-channels

Flume的sink配置,见 http://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#flume-sinks

7.3 可靠性

在每个agent中,event都会暂存在channel中。然后将event传递给下一个agent或是终端存储库中(如sink的类型为HDFS时)。这些event在存储到下一个agent的channel中或是存储到终端存储中(如HDFS)中后,才会在当前agent的channel中将event删除。这样只有在将事件存储到下一个代理的通道或终端存储库中之后,它们才会从通道中删除。这种方式提供了Flume在消息传递时的端到端可靠性。

7.4 可恢复性

当消息传递失败时,event由于已经暂存在channel中,可以从channel中恢复。Flume支持持久化channel(比如采用本地文件系统作为channel),如果追求性能,也可采用memory作为channel,但这样有可能存在数据丢失无法恢复的情况。

7.5 Flume配置文件与用法举例 # example.conf: A single-node Flume configuration # Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = netcat a1.sources.r1.bind = localhost a1.sources.r1.port = 6666 # Describe the sink a1.sinks.k1.type = logger # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1

上面的配置文件定义了一个agent的name为a1,a1的source监听6666端口,并且读取6666端口传过来的数据, a1的channel 采用内存作为缓存,a1的sink 类型为logs,具体含义可以参考官网,或是留言。

在flume的安装目录下执行如下命令,即可使用flume采集数据:

$ bin/flume-ng agent -n a1 -c conf -f conf/netcat2logger.conf -Dflume.root.logger=INFO,console

flume-ng agent :表示flume的启动一个agent,ng是表示这是new的版本命令 -n a1:-n 表示name ,a1表示agent的名字为a1 对应配置文件中的a1 -c conf :表示flume的配置文件目录所在位置 -f conf/netcat2logger.conf: 表示自定义的数据采集配置文件位置。 -Dflume.root.logger=INFO,console:表示我们制定flume的日志格式,并且输出到控制台。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #大数据课程总结