大数据之路_2

1.大数据框架与平台
工作:处理数据
磁盘文件中的数据
网络中的数据流或数据包
数据库中的结构化数据

1.大数据工作
处理数据

数据结构:
    磁盘文件中的数据
    网络中的数据流或数据包
    数据库中的结构化数据

2.数据规模
TB
PB
3.分布式环境中处理大数据
(1)分布式环境,多台计算机共同承担计算任务
(2)存储系统
(3)计算任务的分配
(4)计算负荷的分配
(5)计算机之间的数据迁移
(6)计算机或网络发生故障时的数据安全

4.实例
问题:从销售记录中统计各种商品销售额
解决方案:
(1)单机:
扫描所有信息记录,对销售额累加
如果存在关系数据库中,一个SQL语句就好了
(2)加入:很多的销售记录
需要设计出由多态计算机来统计销售额的方案,

     为了保证计算的正确、可靠、高效及方便,需要考虑下列问题:
     (1)如何为每台计算机分配任务,是先按商品种类对销售记录进行分组,不同机器处理不同商品种类的记录
                    随机向每台机器发送一部分销售记录进行统计,最后将各机器统计的结果,按照商品种类合并。
         (2)那排序的时候,如何排序,用哪种排序算法?在哪台机器上执行排序过程?
        每台机器处理的数据,从哪里来,到哪里去?数据是主动发送,还是接收方申请发送?
        如果是主动发送,接收方处理不过来怎么办?
        如果是申请发送,发送方应该保存多久数据。
     (3)会不会任务分配不均,有的机器很快处理完了,有的机器,一直在忙?甚至,闲的机器需要等着忙的机器处理完成后才能开始执行。
     如果增加一台机器,能不能减轻其他机器的负荷,从而缩短任务执行时间。
     如果一台机器挂了,它没有完成的任务,应该交给谁,会不会遗漏统计或者重复统计。
     统计过程中,机器之间如何协调,是否需要专门的一台机器指挥调度其他机器?如果这台机器挂了呢。
     (4)如果销售记录,还在源源不断的增加,统计还没有执行完,新纪录又来了,如何保证统计结果的准备性?能不能保证结果是实时更新的》?再次统计能不能避免大量
     重复计算。
     (5)能不能让用户执行一句SQL就可以得到结果

     上述问题,除了第一个,其他的分布式计算也会遇到,而且解决起来也相当棘手,即是第一个的分组,统计,在很多数据处理场合,也会遇到,只是,体现方式不同。如果把这些问题
     能封装到一个计算框架中,可以大大简化,这类应用程序的开发。


     2004年,Google先后发表了三篇我呢论来介绍分布式GFS,并行计算模型MapReduce ,非关系数据存储系统BigTable .第一次提出了针对大数据分布式处理的可重用方案/
     Hadoop .数十种,应用于分布式环境的大数据计算框架。
     如果不涉及,第8,9 个问题,(统计过程中,有新的记录过来,保证统计的实时性)属于批处理。

5.大数据框架
批处理
批处理框架重点关心数据处理的吞吐量,又可分为非迭代式和迭代式两类。
迭代式包括DAG(有向无环图)。图计算等模型。
流处理
针对第8个问题提出的对应方案,分两种情况:
如果重点关注是实时性,属于流计算框架
如果侧重避免重复计算:属于增量计算框架。
如果是第9个问题(保证实时性,同时避免重复计算) 数据交互式分析框架。
下面讨论 批处理、流处理、交互式分析的三种类别的框架,要介绍大数据框架的一些发展趋势。

大数据框架
    批处理
        Map/Reduce Hadoop
        DAG Dryad. Tez,Spark,Fink DataSet API
            图计算 Pregel Giraph Hama PowerGraph
    流处理
        实时  MillWheel,S4,Storm,Samaz ,Heron,Grepump ,Flink ,Apex
        小批量 Storm Trident , Spark Streaming .
    交互式分析
        Dremel ,Hive ,Presto ,Implala ,Stinger,Tajo
    增量计算
        Percolator,Kineograph,Galaxy 

(1) Hadoop
最初,Hadoop= HDFS+MapReduce .是从Nuth中独立出来的项目。
在2.0 中,把资源管理和任务调度功能,从MapReduce 中剥离,形成YARN .
使其他框架也可以像MapReduce那样,运行在Hadoop上。
与之前的分布式计算框架相比,Hadoop隐藏了很多繁琐的细节,如容错,负载均衡等,便于使用。

Hadoop 有很强的横向扩展能里,很容易把新的计算机,加入到计算机集群中参与计算。
在开源社区支持下,Hadoop不断完善,集成了如,非关系数据库HBase,数据仓库Hive,数据处理工具Sqoop,机器学习算法Mahout .
一致性服务软件Zookeeper .管理工具Ambari等,形成了相对完整的生态圈和分布式计算事实上的标准。
Hadoop = HDFS+MapReduce+ HBase+ Hive + Sqoop + Mahout +Zookeeper+  Ambari (管理工具)等。

引用程序主要负责设计map 和 reduce任务,其他工作游框架负责。在定义map任务输出数据的方式时,键的选择至关重要,也决定数据如何分组,
排序,传输,以及执行reduce任务的计算机如何分工。
可选择商品种类为键。MapReduce执行商品销售统计的过程如下:
(1)把销售记录分片,分配给多台机器
(2)每条销售记录,被解析成键值对,其中值为销售记录的内容,键可忽略
(3)MapReduce 把map任务生成的数据按商品种类排序
(4)待所有节点,都完成排序后,MapReduce启动reduce任务,每个商品种类对应一个reduce任务。
(5)执行reduce任务的进程通过网络获取指定商品种类的歌词销售额。
(6)MapReduce把同一种商品下的各种销售额合并到表中
(7)执行reduce任务,累加各次销售额,得到该种商品的总销售额。

猜你喜欢

转载自www.cnblogs.com/sujingnuli/p/9953151.html
今日推荐