大数据知识点总结.docx
《大数据知识点总结.docx》由会员分享,可在线阅读,更多相关《大数据知识点总结.docx(12页珍藏版)》请在冰豆网上搜索。
![大数据知识点总结.docx](https://file1.bdocx.com/fileroot1/2022-11/15/41fccda2-6620-42f3-897c-ee902f82e2ba/41fccda2-6620-42f3-897c-ee902f82e2ba1.gif)
大数据知识点总结
大数据知识点总结
大数据知识点总结
1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。
充分利用集群的威力进行高速运算和存储。
2、Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。
HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。
HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streamingaccess)文件系统中的数据。
3、Hadoop的框架最核心的设计就是:
HDFS和MapReduce。
HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
4、Hadoop它主要有以下几个优点:
(a)高可靠性。
Hadoop按位存储和处理数据的能力值得人们信赖。
(b)高扩展性。
Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
(c)高效性。
Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
(d)高容错性。
Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
(e)低成本。
与一体机、商用数据仓库以及QlikView、YonghongZ-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。
5、HDFS
对外部客户机而言,HDFS就像一个传统的分级文件系统。
可以创建、删除、移动或重命名文件,等等。
但是HDFS的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。
这些节点包括NameNode(仅一个),它在HDFS内部提供元数据服务;DataNode,它为HDFS提供存储块。
由于仅存在一个NameNode,因此这是HDFS的一个缺点(单点失败)。
存储在HDFS中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。
这与传统的RAID架构大不相同。
块的大小(通常为64MB)和复制的块数量在创建文件时由客户机决定。
NameNode可以控制所有文件操作。
HDFS内部的所有通信都基于标准的TCPIP协议。
6、NameNode
NameNode是一个通常在HDFS实例中的单独机器上运行的软件。
它负责管理文件系统名称空间和控制外部客户机的访问。
NameNode决定是否将文件映射到DataNode上的复制块上。
对于最常见的3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。
NameNode本身不可避免地具有SPOF(SinglePointOfFailure)单点失效的风险,主备模式并不能解决这个问题,通过HadoopNon-stopnamenode才能实现100%uptime可用时间。
7、DataNode
DataNode也是一个通常在HDFS实例中的单独机器上运行的软件。
Hadoop集群包含一个NameNode和大量DataNode。
DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。
Hadoop的一个假设是:
机架内部节点之间的传输速度快于机架间节点的传输速度。
DataNode响应来自HDFS客户机的读写请求。
它们还响应来自NameNode的创建、删除和复制块的命令。
NameNode依赖来自每个DataNode的定期心跳(heartbeat)消息。
每条消息都包含一个块报告,NameNode可以根据这个报告验证块映射和其他文件系统元数据。
如果DataNode不能发送心跳消息,NameNode将采取修复措施,重新复制在该节点上丢失的块。
8、集群系统
Google的数据中心使用廉价的LinuxPC机组成集群,在上面运行各种应用。
核心组件是3个:
(a)GFS(GoogleFileSystem)。
一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口。
Google根据自己的需求对它进行了特别优化,包括:
超大文件的访问,读操作比例远超过写操作,PC机极易发生故障造成节点失效等。
GFS把文件分成64MB的块,分布在集群的机器上,使用Linux的文件系统存放。
同时每块文件至少有3份以上的冗余。
中心是一个Master节点,根据文件索引,找寻文件块。
详见Google的工程师发布的GFS论文。
(b)MapReduce。
Google发现大多数分布式运算可以抽象为MapReduce操作。
Map是把输入Input分解成中间的KeyValue对,Reduce把KeyValue合成最终输出Output。
这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。
(c)BigTable。
一个大型的分布式数据库,这个数据库不是关系式的数据库。
像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。
9、子项目
(a)HDFS:
Hadoop分布式文件系统(DistributedFileSystem)
(b)MapReduce:
MapReduce是处理大量半结构化数据集合的编程模型
(c)HBase:
类似GoogleBigTable的分布式NoSQL列数据库。
HBase是一个分布式的,面向列的数据库。
它基于Hadoop之上提供了类似BigTable的功能。
(d)Hive:
数据仓库工具。
Hive是一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类似SQL一样的查询语言HiveQL来管理这些数据。
(e)Zookeeper:
分布式锁设施,提供类似GoogleChubby的功能。
ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供包括配置维护,名字服务,分布式同步和组服务等功能。
Hadoop的管理就是用的ZooKeeper。
(f)Avro:
新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
(g)Pig:
大数据分析平台,为用户提供多种接口。
Pig是一个基于Hadoop的大数据分析平台,它提供了一个叫PigLatin的高级语言来表达大数据分析程序。
(h)Ambari:
Hadoop管理工具,可以快捷的监控、部署、管理集群。
对Hadoop集群进行监控和管理的基于Web的系统。
目前已经支持HDFS,MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop等组件。
(i)Sqoop:
在HADOOP与传统的数据库间进行数据的传递。
Sqoop是一个Hadoop和关系型数据库之间的数据转移工具。
可将关系型数据库中的数据导入到Hadoop的HDFS中,也可将HDFS中的数据导进到关系型数据库中。
10、Hadoop1.x与Hadoop2.x的区别:
Hadoop2.x中有两个重要的变更:
(a)HDFS的NameNode可以以集群的方式部署,增强了NameNode的水平扩展能力和可用性
(b)MapReduce将JobTrack中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN
11、Hadoop2.x解决了Hadoop1.x中的哪些问题
(a)2.x解决了1.x中的namenode单点故障问题
(b)解决了namenode内存压力过大难以扩展问题
(c)解决了JobTrack单点故障问题
(d)解决了JobTrack访问压力过大问题
(e)解决了对MapReduce之外的框架支持问题
12、Zeppelin是一个基于web的可视化的大数据分析工具。
主要用来进行交互式的数据分析,它可以跟多种大数据分析组件集成在一起,为这些大数据分析组件提供基于浏览器页面的交互式访问功能。
13、Zeppelin的主要用途
1、DataIngestion(数据摄取)
2、DataDiscovery(数据发现)
3、Dataanalytics(数据分析)
4、DataVisualization&Collaboration(数据可视化和协同开发)
14、Zeppelin的主要特点
a、支持多种编程语言
b、Zeppelin支持的语言取决于跟Zeppelin集成的interpreter.比如Zeppelin跟Hive集成后,就可以支持HQL。
c、Zeppelin默认跟Spark,Sparkshell支持的语法在Zeppelin都默认支持,并且ZeppelinNotebook对Scala,Python和SparkSQL还实现了语言高亮。
d、默认支持Spark
e、通过多种图表的方式,对数据分析提供数据可视化的支持
f、通过简单的拖拽操作,可以对图表中展示的数据进行多种方式的聚合操作,如sum,count,average,min,max。
g、支持动态表单,可以在交互中动态修改过滤条件。
h、使用简单的模板语言来创建form表单,适用于Markdown,Shell,SparkSQL后台。
i、通过编程的方式创建form表单,适用于Scala,Python等,调用z(ZeppelinContext)来创建和访问表单。
j、支持协同开发,Zeppelin的notebook,可以被多人同时使用,任何一个人的改动都会被实时的同步到其他协作者的页面上。
k、Zeppelinnotebook上产生的图表,可以被独立发布,通过iframe,可以嵌入到别的网页上。
l、100%开源的Apache项目。
15、Ambari是一个开源的分布式Hadoop集群安装,部署,监控和管理的平台。
16、Ambari主要由三个部分组成,AmbariServer,AmbariWeb和AmbariAgent。
AmbariServer:
AmbariServer是整个Ambari的统一入口,只能运行在集群中的一台机器上。
负责管理所有的AmbariAgent。
AmbariWeb:
AmbariWeb和AmbariServer运行在同一台机器上,作为AmbariServer的一部分功能存在,提供Web和RestAPI的方式访问AmbariServer。
AmbariAgent:
AmbariAgent需要在集群中的每个节点上都运行一个,负责监控宿主机器的状态信息,执行从AmbariServer上发送过来的操作指令。
17、Spark是UCBerkeleyAMPlab所开源的类HadoopMapReduce的通用的并行计算框架,Spark基于mapreduce算法实现的分布式计算,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的mapreduce的算法。
18、Spark与Hadoop的对比(Spark的优势)
1、Spark的中间数据放到内存中,对于迭代运算效率更高
2、Spark比Hadoop更通用
3、Spark提供了统一的编程接口
4、容错性–在分布式数据集计算时通过checkpoint来实现容错
5、可用性–Spark通过提供丰富的Scala,Java,PythonAPI及交互式Shell来提高可用性
19、Spark的组件
1、SparkStreaming:
支持高吞吐量、支持容错的实时流数据处理
2、SparkSQL,Dataframes:
结构化数据查询