关于Hadoop核心技术的精华问答

随着科技时代的发展,大数据与云计算已势不可挡的架势席卷未来,不可否认,大数据时代已经来临,并将深刻地改变着我们的工作和生活。学习大数据技术,是时代的召唤,是社会对高薪技术人才的渴望,而想要了解大数据就一定要学习Hadoop。作为开发和运行处理大规模数据的软件平台,Hadoop是Appach中用java语言实现开源软件的框架,并实现在大量计算机组成的集群中对海量数据进行分布式计算。今天,我们就来看看关于Hadoop核心技术的问与答吧!

1

Q:Hadoop对于实时在线处理有优势吗?

A:直接使用hadoop进行实时处理时没有优势的,因为Hadoop主要解决的是海量批处理作业计算问题,但是可以使用基于Hadoop的分布式NOSQL系统HBase系统以及相关实时处理系统:

1. 基于Hadoop的HBase可以做到实时处理以及相关需求的实时计算,主要解决海量相关查询计算等需求。

2. 可以考虑Spark计算,Spark是基于共现内存RDD的系统,比Hadoop更快,时候迭代式计算,例如数据挖掘,机器学习算法等。

3. 还有Storm,Storm是一个免费开源、分布式、高容错的实时计算系统,Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。

4. 考虑S4, S4是Yahoo!在2010年10月开源的一套通用、分布式、可扩展、部分容错、具备可插拔功能的平台。这套平台主要是为了方便开发者开发处理流式数据(continuous unbounded streams of data)的应用。

总之,可以依据实际的需求来选择合适的系统。

2

Q:Hadoop存储海量数据没有问题,但是如何能够做到海量数据的实时检索,我们现在是通过跑脚本来检索的,数据量大了就需要等待很长时间才会有结果?

A:海量数据的实时检索可以考虑HBase,建议可以使用hadoop将数据构建成以查询key为键的数据集,然后将集合写入Hbase表中,Hbase会自动以key为键进行索引,在数十亿甚至以上的级别下,查询key的value响应时间也估计再10毫秒内。如果检索条件是多个组合的情况下,可以适当的设计多个hbase表格,这样的检索也是很快的,同时Hbase也是支持二级索引。在符合条件下查询,Hbase也是支持MapReduce的,如果对响应时间要求不高的情况下,可以考虑将hive和Hbase系统结合来使用。如果数据量不是很大的情况下也可以考虑支持类似SQL的NOSLQ系统。

3

Q:大的文件拆分成很多小的文件后,怎样用Hadoop进行高效的处理这些小文件?以及怎样让各个节点尽可能的负载均衡?

A:Hadoop在处理大规模数据时是很高效的,但是处理大量的小文件时就会因为系统资源开销过大而导致效率较低,针对这样的问题,可以将小文件打包为大文件,例如使用SequcenFile文件格式,例如以文件签名为key,文件内容本身为value写成SequcenFile文件的一条记录,这样多个小文件就可以通过SequcenFile文件格式变为一个大文件,之前的每个小文件都会映射为SequcenFile文件的一条记录。

在Hadoop集群中负载均衡是非常关键的,这种情况的导致往往是因为用户的数据分布的并不均衡,而计算资源槽位数确实均衡分布在每个节点,这样在作业运行时非本地任务会有大量的数据传输,从而导致集群负载不均衡,因此解决不均衡的要点就是将用户的数据分布均衡,可以使用hadoop内置的balancer脚本命令。对于因为资源调度导致的不均衡则需要考虑具体的调度算法和作业分配机制。

4

Q:C/C++ 程序员如何入门Hadoop到深入了解,并在Linux服务器上布置运用,有没有方向性的指导?

A:针对C/C++用户,Hadoop提供了hadoop streaming接口和pipes接口,hadoop streaming接口以标准输入和标准输出作为用户程序和hadoop框架交互的中间件,pipes这是专门针对C/C++语言的接口,以socket作为同学中介。从使用上建议从streaming入手,pipes相比streaming问题比较多,而且pipes调试不容易。

5

Q:之前碰到一个情况是在reduce阶段老是卡在最后阶段很长时间,在网上查的说是有可能是数据倾斜,这个有什么解决方法吗?

A:reduce分为3个子阶段:shuffle、sort和reduce,如果reduce整个过程耗时较长,建议先看一下监控界面是卡在哪个阶段,如果是卡在shuffle阶段往往是网络阻塞问题,还有就是某reduce数据量太大,也就是你所说的数据倾斜问题,这种问题往往因为某个key的value太多,解决方法是:第一,默认的partiiton可能不适合你的需求,你可以自定义partiiton;第二就是在map端截断,尽量让达到每个reduce端的数据分布均匀。

2019年,我们的新栏目,有问有答今天就到这里啦,明天我们不见不散。三期问答结束后,您对此栏目有什么意见和看法呢?您想要学习哪方面的问题,我们可以根据您提供的话题,有针对性的进行问答。所以,赶快留言吧!

------------------------------

程序员抢票姿势 ↓交朋友还能抢票?

为交流学习,请备注抢票+姓名+公司职位

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190104B0DAEY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券