Hadoop知识点总结

Hadoop知识点总结
1.什么是hadoop?
hadoop是一个开源软件框架,用于存储大量数据,并发处理/查询在具有多个商用硬件(即低成本硬件)节点的集群上的那些数据。总之Hadoop包括一下内容:
HDFS(Hadoop分布式文件系统):允许以一种分布式和冗余的方式存储大量数据。例如:1GB(即1024MB)文本文件可以拆分为16*128MB文件,并存储在
Hadoop集群中的8个不同节点上。每个分裂可以复制三次,以实现容错,以便如果一个节点出现错误的话,也有备份。HDFS适用于顺序的"一次写入,多次读取"
的类型访问。
MapReduce:一个计算框架。它以分布式和并行的方式处理大量的数据,当你对所有年龄>18的用户在上述1GB文件上执行查询时,将会有"8个映射"函数并行运行,
以在其128MB拆分文件中提取年龄>18的用户,然后"reduce"函数将将会运行以将所有单独的输出组合成单个最终结果。
YARN(又一资源定位器):用于作业调度和集群资源管理的框架。
Hadoop生态系统,拥有15多种框架和工具,如Sqoop,Flume,Kafka,Pig,Hive,Spark,Impala等以便将数据摄入HDFS,在HDFS中转移数据(即变换、丰富、聚合等),
并查询来自HDFS的数据用于商业智能和分析。某些工具(如Pig和Hive)是MapReduce上的抽象层,而Spark和Impala等其他工具则是来自MapReduce的改进架构/
设计,用于显著提高 延迟以支持近实时和实时处理
2.为什么组织从传统的数据仓库工具转移到基于Hadoop生态系统的智能数据中心?
1.现有数据基础设施:
主要使用存储在高端和昂贵硬件中的"structured data,结构化数据"
主要处理为ETL批处理作业,用于将数据提取到RDBMS和数据仓库系统中进行数据挖掘,分析和报告,以进行关键业务决策
主要处理以千兆字节到兆字节为单位的数据量
2.基于Hadoop的更加智能的数据基础设施,其中:
结构化(例如RDBMS),非结构化(例如images,PDF,docs)和半结构化(例如logs,XMLs)的数据可以以可扩展和容错的方式存储在比较便宜的商用机器中
数据可以存储诸如Spark和Impala之类的工具以低延迟的能力查询
可以存储以兆兆字节到千兆字节为单位的较大数据量
3.基于Hadoop的数据中心的好处是什么?
随着数据量和复杂性的增加,提高量整体服务水平协议。例如,"Shared Nothing"架构,并行处理,内存密集行处理框架,如Spark和Impala,以及YARN容量
调度程序中的资源抢占。
缩放数据仓库可能会很昂贵。添加额外的高端硬件以及获取数据仓库工具的许可证可能会显著增加成本。基于Hadoop的解决方案不仅在商品硬件节点和开源
工具方面更便宜,而且还可以通过工具将数据转换卸载到Hadoop工具来不足数据仓库解决方案,从而更高效的处理并行大数据
探索新的渠道和线索。Hadoop可以为数据科学家提供探索性的沙盒,以从社交媒体,日志文件,电子邮件等地方发现潜在的有价值的数据,这些数据通常在
数据仓库中不可得
更好的灵活性。通常业务需求的改变,也需要对架构和报告进行更改。基于Hadoop的解决方案不仅可以灵活的处理不断发展的模式,还可以处理来自不同的来源
例如:社交媒体、应用程序日志文件、结构化和办结构化数据
4.运行Hadoop集群需要哪些守护进程?
DataNode,NameNode,TaskTracker和JobTracker都是运行Hadoop集群所需要的守护进程
5.Hadoop支持哪些操作系统部署?
Hadoop的主要操作系统是Linux。但是通过一些额外的软件,也可以在Windows平台上部署,但是这种方式不被推荐
6.Hadoop常见输入格式是什么?
三种广泛使用的输入格式是:
文本输入:Hadoop中的默认输入格式。
key值:用于纯文本文件
序列:用于依次读取文件
7.RDBMS和Hadoop的主要区别是什么?
RDBMS用于事务性系统存储和处理数据,而Hadoop可以用来存储大量数据
8.nameNode的重要性是什么?
nameNode在Hadoop中非常重要。他是Hadoop的大脑,主要负责管理系统上的分配块,还为客户提出请求时的数据提供特定地址
9(重点)简述如何安装配置Apache的一个开源Hadoop
1.使用root账户登陆
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
10.列出hadoop集群中Hadoop都需要分别启动哪些进程,他们的作用分别是什么?
namenode:负责管理hdfs中文件块的元数据,响应客户端请求,管理datanode上文件block的均衡,维持副本数量
secondname:主要负责做checkpoint操作;也可以做冷备,对一定范围内的数据做快照性备份
datanode:存储数据块,负责客户端对数据块的io请求
Jobtracker:管理任务,并将任务分配给tasktracker
tasktracker:执行jobtracker分配的任务
11.什么是主动和被动的"namenodes"?
在Hadoop的2.x中。我们有两个NameNode-主动NameNdoe,被动NameNode。主动NameNode是在集群中运行的namenode.被动的namenode
是一个备份的namenode,里面有主动的namenode.当主动的namenode失败,则被动的namenode集群中替换主动的namenode。因此,集群从来不会
没有namenode,所以它永远不会失败。
12.当两个客户端尝试访问对HDFS相同的文件,会发生什么?
HDFS只支持独占写入。
当第一个客户端连接namenode打开文家 进行写入时,namenode授予租约的客户端创建这个文件,当第二个客户端试图打开同一个文件写入时,namenode
会注意到该文件的租约已经授予另一个客户端了,并拒绝第二个客户端打开请求
13.Hadoop可以运行在三种模式?
1.独立(本地)模式
2.伪分布式模式
3.完全分布式模式
14.Zookeeper在Hadoop集群中的作用?
zookeeper的目的就是集群管理。zookeeper将帮助实现Hadoop节点之间的协调。也有助于:
1.管理跨节点配置
2.实现可靠的消息传递
3.实现冗余服务
4.同步流程执行
15.什么是MapReduce?
它是一个框架或用于通过分布式编程的计算机的集群处理大型数据集的编程模型
16.Hbase的特点是什么?
1.Hbase是一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理
2.Hbase适合存储半结构化或非结构化的数据,对于数据字段不够确定或者杂乱无章很难按一个概念去抽取的数据。
3.Hbase为null的记录不会被储存
4.基于的表包含rowkey,时间戳和列族,新写入数据时,时间戳更新,同时可以查询到以前的版本
5.Hbase是主从架构,hmaster作为主节点,hergionserver作为从节点
17.Hbase和Hive有什么区别?
Hive和Hbase是两种基于Hadoop的不同技术--Hive是一种类sql的引擎,并且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQl的key/value数据库
当然,这两种数据是可以同时使用的。就像用Google来搜索,用faceBook进行社交一样,Hive可以用来统计查询,Hbase可以用来进行实时查询,数据也可以从
Hive写到Hbase,设置再从Hbase写回Hive
18.描述Hbase的rowKey的设计原则
长度原则
RowKey是一个二进制码流,RowKey的长度被很多开发者建议说设计在10~100个字节,不过建议是越短越好,不要超过16个字节。原因如下:
1.数据的持久化文件HFile中按照key/value存储的,如果RowKey过程比如100个字节,1000万列数据光是rowkey就要占用100*1000万=10亿个字节
将近1G数据,这会极大影响HFile的存储效率
2.MemStore将缓存部分数据到内存,如果RowKey字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这回降低检索效率,因此长度越短越好
3.操作系统目前都是64位的,内存8字节对齐,控制在16个字节,8字节的整数倍利用操作系统的最近特性
散列原则
1.如果RowKey是按照时间戳方式递增,不要将时间放在二进制编码的前面,建议将RowKey的高位作为散列字段,有程序循环生成,低位放时间字段,这样将提高
数据均衡分布在每个Regionserver实现负载均衡的机率,如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个Regionserver上堆积的热点现象
这样在做数据检索时负载将会集中在个别Regionserver,降低插叙效率。
2.RowKey唯一原则,必须在设计上保持唯一性
19.描述HBase中scan和get的功能以及实现的异同
HBase的查询实现只提供两种方式:
1.按指定的RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.get)
get的方法处理分两种:设置了ClosestRowBefore和没有设置的rowlock。主要是用来保证行的事务性,即每个get是以一个row来标记的。一个row中
可以有很多family和column
2.按指定的条件获取一批记录,scan方法实现条件查询功能使用的就是scan方法
1.scan可以通过setCaching与setBatch方法提高速度(以空间换时间)
2.scan可以通过setStartRow与setEndRow来限定范围。范围越小,性能越高
3.scan可以通过setFilter方法添加过滤器,也是分页、多条件查询的基础
20.请详细描述Hbase中一个Cell的结构
Hbase中通过row和columns确定的为一个存储单元称为cell
Cell:由{rowkey,column(=<family>+<label>),version}为一块确定的单元,cell中的数据是没有类型的全部是字节码形式存储
21.编写用Hbase shell创建一张表语句
create "emp","ename","jobs" ##emp 表名 enames和jobs是列族
22.删除表语句需要几步怎么写语句?
1.disanble表名
2.drop表名
23.谈谈Hive数据倾斜的问题
Hive数据倾斜的原因:
1.key分布不均
2.业务数据本身的特性
3.sql语句造成的数据倾斜
解决方法:
hive设置hive.map.aggr=true和hive.groupby.skewindat=ture
有数据倾斜的时候进行负载均衡,当选项设定为true,生成的查询计划会有两个MR Job.第一个MR Job中,Map输出的结果集会随机分布到Reduce中,
每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能会被分发到不同的Reduce中,从而达到负载均衡的目的;第
二个MR Job在根据预处理的数据结果按照Group By Key分布到Reduce中(这个过程可以保相同的Group By Key被分布到同一个Reduce中),最后完成
最终 的聚合操作。
SQL语句调整:
1.选用join key分布最均匀的表作为驱动表。最好列裁剪和filter操作,以达到两表join的时候,数据量相对变小的效果
2.大小表join:使用map join 让小的维度表(1000条以下的记录条数)先进内存。在Map端完成Reduce
3..大表join大表:把空值的key变成一个字符串加上一个随机数,把倾斜的数据分到不同的Reduce上,由于null值关联不上,处理后并不影响最终的结果
4.count distinct大量相同特殊值:count distinct时,将值为空的情况单独处理,如果是计算count distinct,可以不用处理,直接过滤,在操作后结果中+1
如果还有其他计算,需要进行group by,可以先将值为空的数据单独记录,在和其他计算结果进行union
24.Hive中的排序关键字有哪些?
sort by,order by,cluster by,distribute by
sort by:不是全局排序,其在数据进入reduce前完成排序
order by:会对输入做全局排序,因此只有一个reduce.只有一个reduce时,会导致当输入规模较大时,需要较长的计算时间
cluster by:当distributeby和sort by的字段相同时,等同与cluster by可以看作特殊的distribute+sort
distrubute by:按照指定的字段对数据进行划分输出到不同的reduce中
25.Hive内部表和外部表区别?
创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表时,仅记录数据所在的路径,不对数据的位置做任何的改变
删除表时:在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据不删除数据这样外部表相对来说更加安全一些,数据组织也更加
灵活,方便共享数据源。
26.Hive分区和分桶的区别?
分区:
是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹,比如要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上
由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源特别多。这种情况下,完全可以按照日期对数据表进行分区,不同日
期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区找
分桶:
分桶时相对于分区进行更细粒度的划分
分桶将整个数据内容安装某列属性值的hash值进行区分,如要按照name属性分为三个桶,就是name 属性的hash值对3取模,按照取模结果对数据分桶
如取模结果为0的数据存放到一个文件,为1的存放到一个文件,为2的存放存放到文件

 

posted @ 2020-12-25 14:52  IT特工  阅读(898)  评论(0编辑  收藏  举报