大数据如何用好Hadoop的9个问答详解

作者: 大数据架构师 | 来源:发表于2019-06-27 12:59 被阅读1次

    作为目前使用最为广泛的大数据处理平台,把Hadoop用起来很容易,但是要“用好”很难。以下是关于如何用好Hadoop的9个问答详解,希望对大家有所帮助。

    近十年来,正是Hadoop的出现和不断完善,让海量数据挖掘成为可能,为科研和IT业界带来了一场革命性的风暴。身处风暴中心的互联网企业们,更是将这个工具发挥到极致,不但在该平台上运行无数的离线服务,还逐渐以更加开放的心态,反哺社区和学习者。作为目前使用最为广泛的大数据处理平台,把Hadoop用起来很容易,但是要“用好”很难。以下是关于如何用好Hadoop的9个问答详解,希望对大家有所帮助。

    问:Hadoop适不适用于电子政务?为什么?

    答:电子政务是利用互联网技术实现政府组织结构和工作流程的重组优化,建成一个精简、高效、廉洁、公平的政府运作信息服务平台。因此电子政务肯定会产生相关的大量数据以及相应的计算需求,而这两种需求涉及的数据和计算达到一定规模时传统的系统架构将不能满足,就需要借助海量数据处理平台,例如Hadoop技术,因此可以利用Hadoop技术来构建电子政务云平台。

    总结一下,任何系统没有绝对的适合和不适合,只有当需求出现时才可以决定,在一个非常小的电子政务系统上如果没有打数据处理以及计算分析需求时就不需要hadoop这样的技术,而实际上,商用的电子政务平台往往涉及到大规模的数据和大量的计算分析处理需求,因此就需要Hadoop这样的技术来解决。

    问:hadoop对于实时在线处理有优势吗?

    答:直接使用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)的应用。

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

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

    答:海量数据的实时检索可以考虑HBase,建议可以使用hadoop将数据构建成以查询key为键的数据集,然后将集合写入Hbase表中,Hbase会自动以key为键进行索引,在数十亿甚至以上的级别下,查询key的value响应时间也估计再10毫秒内。

    如果检索条件是多个组合的情况下,可以适当的设计多个hbase表格,这样的检索也是很快的,同时Hbase也是支持二级索引。在符合条件下查询,Hbase也是支持MapReduce的,如果对响应时间要求不高的情况下,可以考虑将hive和Hbase系统结合来使用。

    如果数据量不是很大的情况下也可以考虑支持类似SQL的NOSLQ系统。

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

    答:1. 怎样用Hadoop进行高效的处理这些小文件?

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

    2. 怎样让各个节点尽可能的负载均衡?

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

    对于因为资源调度导致的不均衡则需要考虑具体的调度算法和作业分配机制。

    问:以后想从事大数据方面工作,算法要掌握到什么程度,算法占主要部分吗?

    答:首先,如果要从事大数据相关领域的话,hadoop是作为工具来使用的,首先需要掌握使用方法。可以不用深入到hadoop源码级别细节。

    然后就是对算法的理解,往往需要设计到数据挖掘算法的分布式实现,而算法本身你还是需要理解的,例如常用的k-means聚类等。

    问:大数据处理都是服务器上安装相关软件吗,对程序有什么影响呢,集群、大数据是属于运维的工作内容还是攻城狮的呢?

    答:传统的程序只能运行在单机上,而大数据处理这往往使用分布式编程框架编写,例如hadoop mapreduce,只能运行在hadoop集群平台上。

    运维的责任:保证集群,机器的稳定性和可靠性

    hadoop系统本身研发:提高Hadoop集群的性能,增加新功能。

    大数据应用:把hadoop作为工具,去实现海量数据处理或者相关需求。

    问:100个以上hadoop节点,一般怎么开发,运维?任务很多的情况下任务资源怎么分配,任务执行顺序是定时脚本还是别的什么方式控制

    答:1. 首先大数据的应用开发和hadoop集群的规模是没有关系,你指的是集群的搭建和运维吗,对于商用的hadoop系统来说涉及到很多东西,建议参考《hadoop核心技术》实战篇 “第10章 Hadoop集群搭建 ” 章节。

    2. 任务的分配是有hadoop的调度器的调度策略决定的,默认为FIFO调度,商业集群一般使用多队列多用户调度器,可以参考参考《hadoop核心技术》高级篇 “第9章 Hadoop作业调度系统” 章节。

    3. 任务的执行顺序是有用户控制的,你自然可以定时启动,也可以手动启动。

    问:非大数据的项目能否用hadoop?

    答:非大数据项目是否可以用Hadoop的关键问题在于是否有海量数据的存储,计算,以及分析挖掘等需求,如果现有系统已经很好满足当前需求那么就没有必要使用Hadoop,没有必要使用并不意味这不能使用Hadoop,很多传统系统能做的Hadoop也是可以做的,例如使用HDFS来代替LINUX NFS,使用MapReduce来代替单服务器的统计分析相关任务,使用Hbase代替Mysql等关系数据库等,在数据量不大的情况下通常Hadoop集群肯定比传统系统消耗更多的资源。

    问:hadoop mapreduce 和第三方资源管理调度系统如何集成?

    答:Hadoop的调度器设计的一个原则就是可插拔式调度器框架,因此是很容易和第三方调度器集成的,例如公平调度器FairScheduler和容量调度器CapacityScheduler,并配置mapred-site.xml的mapreduce.jobtracker.taskscheduler以及调度器本身的配置参数,例如公平调度器控制参数则需要编辑fair- scheduler.xml进行配置,具体可以参考我的新书《Hadoop核心技术》实战篇第十章节10.11的集群搭建实例中的10.10.9 配置第三方调度器,同时可以进一步深入学习第9章 Hadoop作业调度系统,在这一章中会详细介绍各种第三方调度器以及使用配置方法。

    推荐阅读文章

    年薪40+W的大数据开发【教程】,都在这儿!

    大数据零基础快速入门教程

    Java基础教程

    web前端开发基础教程

    大数据时代需要了解的六件事

    大数据框架hadoop十大误解

    年薪30K的大数据开发工程师的工作经验总结?

    大数据框架hadoop我们遇见过的问题

    相关文章

      网友评论

        本文标题:大数据如何用好Hadoop的9个问答详解

        本文链接:https://www.haomeiwen.com/subject/hnhnfctx.html