温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hadoop,HBase和Hive知识点的示例分析

发布时间:2021-12-08 10:46:56 来源:亿速云 阅读:139 作者:小新 栏目:云计算

小编给大家分享一下Hadoop,HBase和Hive知识点的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一 Hadoop

主要包括HDFS 和Yarn,Common 

对于HDFS ,要熟悉基本的文件操作,shell命令hadoop fs -ls  /         hadoop fs -copyFromLocal   path2 path3等

对于javaAPI ,熟悉FileSystem hdfs=FileSystem.get(conf)          FileStatus  

HDFS的NameNode 和SecondNameNode ,DataNode 的各个作用。

NameNode 文件的命名空间管理,读写文件之前都要向他询问,保存文件的元数据,即文件名与数据块。接受DataNode心跳响应,以及传递的数据块&&DataNode 的位置的信息。

SecondNameNode 并不是NameNode的热备份,他合并NameNode的fsimage和editLog,合成一个新的editLog,减轻内存的占用

在HA中,分为Active NameNode 和StandardBy NameNode  通过共享editLog 双方都及时的共享信息,配有故障转移,且都向ZK注册

因为HDFS是三备份的,数据根据通过机架感知效应,分配的合理,尽量将计算在本地进行或者距离数据较近的机器上进行,减少网络传输的消耗。

在网络上传输用的是RPC,类似于架构层次的协议,就是把某些接口以及接口中的方法称为协议,客户端和服务器端只要实现这些接口方法,就可以通信了。其中使用了动态代理的技术,NIO

DataNode 负责对数据实际的存储位置,因为数据是分块的,即每个Block大小的设置,当有一个很大的文件,NameNode 对其进行切分时,分成多少块,占总文件的比例。

因为有多个DataNode ,各个DataNode之间也是有通信的,DataNode 不仅要管理本地的数据,与JobClient 的通信,其他DataNode的通信。

当对文件进行读取的时候,NameNode 向DataNode 询问具体数据的位置,DataNode对于文件的定位。

还有就是文件的序列化问题,Hadoop实现的是自己的方式。

NameNode 和DataNode 间的通信,依靠心跳响应,DataNode 每隔一段时间向NameNode 汇报执行情况,当出现宕机时,NameNode会重新分配新的机器,还有就是当一台机器上的任务执行速度很慢的时候,

NameNode 会再起一台,同时执行。

HDFS中关于文件的输入输出格式,也可以自己定义格式,FileInputFormat 和FileOutputFormat

对于HDFS的优化:初始化Block的大小,数据备份的个数,设置机架感知,心跳的时间间隔,3.0中对NameNode中的一些信息进行适时的删除,减轻NameNode 启动压力。

Yarn 分为了资源分配管理,任务监督执行,以及真正的运算平台。

ResourceManager(Scheduler ,Application Manager)负责分配任务运行所需要的资源,container(CPU和内存)

NodeManager和Application Master分别负责对于任务的监控以及任务的执行。

yarn默认的运算平台支持mapreduce和spark,stome吧

MapReduce 执行过程:map阶段和reduce阶段。在map阶段,通过InputFormat 对于输出的数据进行整理成<Key,Value>的形式,写入到内存,接着进行分区,有几个reducer就分为几个partition,对每个partition内的数据

按照key进行排序,如果有combiner函数,对相同key的值进行合并,如果数据量达到内存的80%自己设置的,则spill到磁盘中,最后对磁盘中的多个file进行合并,最多10个file合并,这些就是map阶段的结果。

在reduce阶段,首先copy,开启多个进程,把各个map上的结果拷贝到reduce机器的内存中,满了则磁盘上。对拷贝过来的文件,进行merge,sort。最后进行reduce计算。

MapReduce阶段的优化:map和reduce任务的个数,以及每个map和reduce能够处理的最大,最小数据量,是否能够设置combiner函数(要求输入和输出格式统一),当内存中数据达到多少比例时溢写到磁盘。

对于map结果是否进行压缩,jvm是否重用。这其中缓存的使用。

当map的文件都是小文件时,将多个小文件进行打包,或者使用AVRO格式合并

在copy过程中,开启的并行的进程数。

Hive 数据仓库,通过使用HiveQL,方便使用类似SQL的语句进行对表的管理,支持离散数据处理。

首先hive shell     创建表分为内部表和外部表,内部表是数据存储在实际的仓库中,删除时元数据和数据都删除了。外部表只是执行数据仓库的一个连接,删除时只删除元数据不擅长实际数据。

create external table name() (partitioned by ) row format delimited fields terminnated by '\t'  location hdfspath

加载数据到hive load data inpath hdfspath 或者从本地 load data local inpath file:\\

或者在创建表的时候就指定 create table name as select aaa bbb from t1 

由多个表中导入数据的时候使用:from tableA  insert into tableB select id,name,sex 

将HIVE表的数据导出到表insert overwrite table a select ss form nn

导出也分为三种方式,insert overwrite local directory file:\\\ select aa,bb from table1  导出到HDFS   insert overwrite directory hdfs:\\ select aa from table2

导出到其他表  insert into table test1 partition() select a from table3

Hive java API  

Hive 底层使用MapReduce 进行计算

Hive支持三种连接表的方式,map join ,reduce join 和semi join

map join 使用的条件是左表数据量较小,可以直接放到内存中,那么右表与左表的数据进行一一的比对。

reduce join 就是对map的结果进行运算,因为存在多个map的结果,所以运算量很大,网络上的传输消耗也很大。

semi join 就是在进行reduce join之前对map的结果进行筛选,筛选一些重复的key,做法是将左表随机分成一个小表,放入内存,将另一部分与他进行比较,去除重复的。

Hive的优化:数据倾斜的问题,使用分区,join,group by 或者是

Hive 中的strict 模式,很多情况下都要设置为false,关闭严格模式。

clustered by 等同于distributed by ,sort by 结合

设置在map端聚合,set hive.map.aggr=true,设置map端聚合的条目数 set hive.groupby.mapaggr.checkinterval=10000

是否合并map端输出文件,set hive.merge.mapfile=true

是否合并reduce端输出文件,set hive.merge.mapredfiles=true

HBase 列式数据库,表中必须有列族,列的个数可以实时的增加,支持实时的查询。根据行健进行查询

create 'table1','fam'  put ,get ,scan,Scanner ,delete

HMaster 负责监控各个HRegionServer,且与ZK通信

HregionServer 管理各个HRegion ,向ZK注册

一个HRegionServer 中有多个HRegion,一个HRegion相当于一个map任务

写入数据时,采用预写日志,然后写入到Memstore ,满了,则spill成HFile,一个HFile格式<RowKey,Family,Qualifier,Timestamp,value>,写入过程中,会使用BlockCache对写入的文件进行缓存

读取特定的数据的时候,首先从ZK中得到-ROOT-的信息,从-ROOT-得到.META.的信息,找到特定的RegionServer中的Region,此过程也会对经常要读取的文件进行缓存。

HBase java API  HTable  HBaseAdmin 负责对表的创建

HTableDescripter ,HColumnDescripter

HBase中的布隆过滤器,

最重要的是rowkey的设计,一般防止热点,使用salt或者hash key来组合rowkey,使得分布的均匀

以上是“Hadoop,HBase和Hive知识点的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI