数据的处理
Hadoop
Hadoop是一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的高速运算和存储能力。Hadoop构建了一个分布式文件系统,Hadoop Distributed File System(HDFS),HDFS有着高容错性,而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,这样就可以以流的形式访问文件系统中的数据。
- 优点
能够对大量数据以一种可靠、高效、可伸缩的方式进行分布式处理。
可靠是因为它假设计算元素和存储会失败,因此维护多个工作数据副本,确保能够针对失败的节点重新分布处理;
高效是因为它以并行的方式工作,通过并行处理加快处理速度;
可伸缩是因为它能够处理PB级数据。
此外,由于它依赖于社区服务器,因此他的成本比较低,任何人都可以使用。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。- 高可靠性:Hadoop按位存储和处理数据的能力值得信赖
- 高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
- 高效性:Hadoop能在节点间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
- 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
- 架构
最底部是HDFS,它存储Hadoop集群中所有存储节点上的文件。HDFS上一层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成。- HDFS
HDFS架构是基于一组特定的节点构建的,这些节点包括NameNode(仅一个),它在HDFS内部提供元数据服务;DataNode,它为HDFS提供存储块。由于仅存在一个NameNode,因此这是HDFS的一个缺点(单点失败)。
存储在HDFS中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。块的大小和复制的块数量在创建文件时由客户机决定。NameNode可以控制所有文件操作,HDFS内部的所有通信都基于标准的TCP/IP协议。 - MapReduce
MapReduce本身就是用于并行处理大数据集的软件框架,它的根源就是函数式编程中的Map和Reduce函数。Map函数接受一组数据并将其转换为一个键值对列表,输入域中的每个元素对应一个键值对。Reduce函数接受Map函数生成的列表,然后根据它们的键合并键值对。
并行功能实现机制:
一个代表客户机在单个主系统上启动的MapReduce应用程序称为JobTracker,它是Hadoop集群中唯一负责控制MapReduce应用程序的系统。在应用程序提交之后,将提供包含在HDFS中的输入和输出目录。JobTracker使用文件块信息(物理量和位置)确定如何创建其他TaskTracker从属任务。MapReduce应用程序被复制到每个出现输入文件块的节点,将为特定节点上的每个文件块创建一个唯一的从属任务。每个TaskTracker将状态和完成信息报告给JobTracker。
Hadoop没有将存储移动到某个位置以供处理,而是将处理移动到存储。
- HDFS
Spark
Spark被称为下一代计算平台,它立足于内存计算,从多迭代批量处理出发,兼容并蓄数据仓库、流处理和图计算等多种计算范式。
Spark是基于内存计算的集群计算系统,设计目标是让数据分析更加快速,提供比Hadoop更上层的API,支持交互查询和迭代计算。
Spark拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
Spark程序工作在两个空间中:Scala原生数据空间和Spark RDD空间
- Scala原生数据空间
在原生数据空间中,数据表现为标量、集合类型和持久存储(如HDFS)。 - Spark RDD空间
RDD: Resilient Distributed Datasets,弹性分布式数据集, 是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD ,不同的分片、 数据之间的依赖 、key-value类型的map数据都可以看做RDD。
Spark编程模型中多种算子:
1)输入算子:将Scala集合类型或存储中的数据吸入RDD空间,转为RDD
2)变换算子:RDD经过变换算子生成新的RDD
3)缓存算子:有些RDD是计算的中间结果,其分区并不一定有相应的内存或存储与之对应,如果需要以备未来使用,可以调用缓存算子将分区物化存下来。
4)行动算子:输入是RDD,输出是执行后生成的原生数据,可能是Scala标量,集合类型的数据或存储。其效果是从RDD空间返回原生数据空间。
元数据的结构是DAG,其中每一个顶点是RDD,从父RDD到子RDD有边,表示RDD间的依赖。Spark称元数据DAG为世系(Lineage),由世系来实现日志更新,世系一直增长,直到遇上行动算子,这时就要评估了,把刚才累积的所有算子一次性执行。
Spark采用日志数据更新来实现容错。
数据的未来
智慧城市
智慧城市基于互联网、云计算等新一代信息技术以及维基、社交网络、FabLab、LivingLab、综合集成法等工具和方法的应用,营造有利于创新涌现的生态。利用信息和通信技术(ICT),可以令城市生活更加智能化,使我们高效利用资源,促进成本和能源的节约,改进服务交付和生活质量,减少对环境的影响,支持创新和低碳经济。
智慧城市的四个特征:全面透彻的感知,宽带泛在的互联、智能融合的应用以及以人为本的可持续创新。
智慧医疗
在医疗服务行业上,大数据可应用于临床诊断、远程监控、药品研发、防止医疗诈骗等方面。
医疗领域的数据有几种类型,第一种是医学影像的数据,像X光,CT等。
第二种是电子病例、电子健康档案。第三种是和基因组学、蛋白组学等新的治疗技术相关的。
可穿戴技术
可穿戴技术是指探索和创造能直接穿在身上,或是整合进用户的衣服或配件的设备的科学技术。
之所以要开发可穿戴技术,是为了通过“内在连通性”,实现快速的数据获取。通过超快的分享内容能力,高效的保持社交联系,摆脱传统的手持设备而获得无缝的网络访问体验。
网友评论