大数据相关组件答疑

1、 HDFS文件读流程?

(1)客户端通过调用FileSystem的open方法获取需要读取的数据文件,对HDFS来说该FileSystem就是DistributeFileSystem

(2)DistributeFileSystem通过RPC来调用NameNode,获取到要读的数据文件对应的bock存储在哪些NataNode之上

(3)客户端先到最佳位置(距离最近)的DataNode上调用FSDataInputStream的read方法,通过反复调用read方法,可以将数据从DataNode传递到客户端

(4)当读取完所有的数据之后,FSDataInputStream会关闭与DataNode的连接,然后寻找下一块的最佳位置,客户端只需要读取连续的流。

(5)一旦客户端完成读取操作之后,就对FSDataInputStream调用close方法来完成资源的关闭操作

 

2、HDFS文件写操作

(1)客户端通过调用DistributeFileSystem的create方法来创建一个文件

(2)DistributeFileSystem会对NameNode发起RPC请求,在文件系统的名称空间中创建一个新的文件,此时会进行各种检查,比如:检查要创建的文件是否已经存在,如果该文件不存在,NameNode就会为该文件创建一条元数据记录

(3)客户端调用FSDataOututStream的write方法将数据写到一个内部队列中。假设副本数为3,那么将队列中的数据写到3个副本对应的存储的DataNode上。

(4)FSDataOututStream内部维护着一个确认队列,当接收到所有DataNode确认写完的消息后,数据才会从确认队列中删除

(5)当客户端完成数据的写入后,会对数据流调用close方法来关闭相关资源

 

3、Hive与HBase的对比区别?

Hive

(1)数据仓库

Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。

(2) 用于数据分析、清洗

Hive适用于离线的数据分析和清洗,延迟较高。

(3) 基于HDFS、MapReduce

Hive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行。

HBase

(1) 数据库

是一种面向列存储的非关系型数据库。

(2) 用于存储结构化和非结构化的数据

适用于单表非关系型数据的存储,不适合做关联查询,类似JOIN等操作。

(3) 基于HDFS

数据持久化存储的体现形式是Hfile,存放于DataNode中,被ResionServer以region的形式进行管理。

(4) 延迟较低,接入在线业务使用

面对大量的企业数据,HBase可以直线单表大量数据的存储,同时提供了高效的数据访问速度。

 

3、Hive内部表和外部表的区别?

创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。

删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

 

4、mapReduce中shuffle阶段的工作流程,如何优化shuffle阶段?

分区,排序,溢写,拷贝到对应reduce机器上,增加combiner,压缩溢写的文件。

 

5、保证kafka数据的容错性、一致性,在集群运行环境过程中,若机器发生宕机了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢607

你的鼓励,是我前行动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值