|=-----------------------------------------------------------------=|
|=-----=[ D O   N O T   F U C K   W I T H   A   H A C K E R ]=-----=|
|=-----------------------------------------------------------------=|
|=------------------------[ #3 File 0x08 ]-------------------------=|
|=-----------------------------------------------------------------=|
|=------------------=[Introduction to big data]=-------------------=|
|=-----------------------------------------------------------------=|
|=---------------------=[   By 口水猫   ]=-------------------------=|
|=-----------------------------------------------------------------=|
|=-----------------------=[ Feb 20 2014  ]=------------------------=|
|=-----------------------------------------------------------------=|

—[ Index
   1  - Big data
	
	1.1 - Introduction

	1.2 - Google big data history
	
	1.3 - Definition and Application

   2  - Technology Stack

	2.1 - NoSql and NewSql

	2.2 - Computation Framework

	2.3 - Tools and Languages

   3  - Security

   4  - Study Resource
[------------------------------------------------------------------------------]



--[  1.1 - Background

随着科技的日益发展,近几年来人类产生的数据量已经超过了人类历史之和。网
络基础设施发展迅猛,信息传递带宽不断加大。存储设备不断发展,存储量不断
提高,存储数据的成本也在不断下降。互联网的快速发展,将全球联系在了一起。
加之物联网的兴起,也在不断的产生各种数据,随着智能设备的普及,人们可以
随时的分享信息。云技术的发展,也使得数据的集中存储成为现实需求,这一切
的发展都使得对于海量数据的处理与挖掘成为人们的焦点。从国际环境来看,美
国启动“大数据研究和发展计划”,把应对大数据技术革命带来的机遇和挑战提高
到国家战略层面;欧盟启动“未来投资计划”,总投资3500亿欧元推动大数据等尖
端技术领域创新;而亚洲部分国家在IT振兴计划中把大数据发展作为国家战略提
出,新ICT战略重点关注大数据应用技术。可以看出,大数据战略将重新洗牌全球
格局,事实上在国家层面,已经成为继边防、海防、空防之后,第四个大国博弈
的空间。2011年6月,美国咨询界的翘楚麦肯锡咨询公司发布了《大数据:下一个
竞争、创新和生产力的前沿领域》的研究报告。这份长达150余页报告的主要观点
囊括了大数据对国民经济部门生产效率的推动、大数据的快速增长及IT技术对产
能的贡献率等等。

2012年5月29日,联合国“全球脉动”(Global Pulse)计划发布《大数据开发:机
遇与挑战》报告,阐述了大数据带来的机遇、主要挑战和大数据应用。Global
Pulse计划是希望利用“大数据”来促进全球经济发展,使用自然语言解密软件来对
社交网站和文本消息中的信息进行“情绪分析”,帮助预测某个给定地区的失业率、
支出削减或是疾病爆发等现象。

欧盟委员会全新的开放数据平台于2013悄然向公众开放。到目前为止,平台开放了
多达5 913个数据集,其中的5 634个数据库来自欧盟统计局Eurostat,数据库包括
地理、统计、气象数据,以及来自公共资金研究项目的数据和数字化图书等。在开
放数据平台中的数据集均由欧盟收集、购买并免费提供给所有的用户,来自欧盟以
及其他地区的用户都可以到平台上直接下载数据用于分析、开发创新服务或应用
等。在这一点上,开放数据平台与美国政府数据公开网站data.gov非常相似。据欧
洲公共信息系统EPSI(European Public Sector Information Platform)的消息
称,最新上线的平台是关于透明、开放政府以及创新,在2013年1月以前,欧盟并不
希望有太多的公众知道这个开放数据平台的存在,但是在读者中包括了很多开源数
据的粉丝,他们对平台给与了很多有用的反馈。事实上,一些欧盟国家已经开始着
手向公众开放数据,如英国的Data.gov.uk、比利时的Data.gov.be和法国的
Data.gouv.fr等,欧盟委员会则希望可以和成员国一起,在此之外建立一个大型的
数据库。日本政府发布的ICT计划也将重点放在了大数据身上。随着企业数据软件
公司splunk公司的上市,也表明了大数据产业的到来。

--[  1.2 - Google big data history

在大数据技术的发展史上,google是奠基者,其技术架构也是各个公司研究和学
习的重点。Google于2003年开始陆续发表了GFS、MapReduce以及BigTable的论文,
后来雅虎资助的Hadoop按照三篇论文进行了相应的开源实现,有了对应
MapReduce的hadoop,对应GFS的HDFS以及对应BigTable的Hbase。GFS是一个可扩展
的分布式文件系统,用于大型的、分布式以及对大量数据进行访问的应用,运行
于廉价的普通硬件上,提供容错功能。MapReduce则提供一套进行分布式并行计算
的编程模型。BigTable则提供了分布式的数据库进行结构化数据的存储。

随着业务的发展,google采用新一代的搜索引擎来代替原有的系统。其中
Precolator采用增量处理索引系统来取代Mapreduce的批处理索引系统。
Colossus,也被称为GFS2(二代Google文件系统),它专为建立Caffeine搜索索引
系统而用。为了更好地支持大数据集的互动分析,Google推出了Dremel和
PowerDrill。Dremel被设计用来管理非常大量的大数据集(指数据集的数量和每数
据集的规模都大),其数据存于外存。而PowerDrill则设计用来分析少量的大数据
集(指数据集的规模大,但数据集的数量不多)时提供更强大的分析性能,其数据
存于内存。基于Dremel系统,Google推出其强大的数据分析软件和服务BigQuery,
它也是Google自己使用的互联网检索服务的一部分。Pregel则是谷歌更快捷的网
络和图算法。基于搜索统计算法,Google推出搜索引擎的输写纠错、统计型机器
翻译等服务。Google Instant。输入关键词的过程,Google Instant 会边打边预
测可能的搜索结果。Spanner是Google新一代分布式数据库,它既具有NoSQL系统
的可扩展性,也具有关系数据库的功能。例如,它支持类似SQL的查询语言、支持
表连接、支持事务(包括分布式事务)。Spanner可以将一份数据复制到全球范围
的多个数据中心,并保证数据的一致性。一套 Spanner集群可以扩展到上百个数
据中心、百万台服务器和上T条数据库记录的规模。目前,Google广告业务的后台
(F1)已从MySQL分库分表方案迁移到了Spanner上。

--[  1.3 - Definition and Application
对大数据的定义仁者见仁智者见智,但基本都会体现在海量数据规模(Volume)、
速度(Velocity)、多样性(Variety)以及巨大的价值(Value)方面。海量的数据使
得传统的数据处理架构捉襟见肘,多样化的数据(结构性以及非结构性)对传统
的关系型数据库技术也带来了挑战。透过大数据带来的巨大价值也在转变企业对
于业务、经营决策的思考。

数据科学的应用场景涵盖了很多行业,比如金融行业中的征信、风控都会利用到
大量的数据。医疗行业中,病历等信息的数据化、检索、自动诊疗、基因遗传研
究等都对数据处理提出了新的挑战。互联网行业更是数据应用的重要战场。而智
慧城市、智能交通等新型城市建设方面也依托于数据的相关技术。制造、材料、
化工等传统产业也在受着大数据的影响。

在产业方面,开源社区的贡献越来越大。产业在垂直整合,不同厂商的服务在同
质化,此时厂商竞争的优势在于对业务问题的把握以及给出合适的解决方案以及
针对企业定制的专门的数据服务。如splunk提供专业的机器学习和数据挖掘的运
维解决方案,cloudera为企业基于hadoop定制大数据处理平台。Cetas则专门针对
虚拟资源设计的大数据应用。

--[  2.1 - NoSql and NewSql

大数据的处理依然离不开对数据采集、数据存储、数据管理以及数据挖掘与分析
等问题的关注。IBM的datastage、SAS的dataflux、微软的SSIS都是不错的ETL工
具,可以完成数据的抽取、转换与加载。数据存储方面采用HDFS等分布式文件系
统,EMC的Greenplum采用了MPP(大规模并行处理)结构来处理海量数据。
Isilon提供了高度可用、超高性能的模块化横向扩展存储系统用于处理大数据。

传统的数据库和数据仓库很难承受海量的数据。随着大数据技术的发展,出现了
一大批新型的数据库。事务型数据库方面,nosql和newsql变的越重要。Nosql放
弃了关系模型,采用“无模式”数据。Nosql中有很多采用键值模型进行存储。
Bigtable是一个分布式的结构化数据存储系统,用来处理海量数据,它和传统的
数据库比较类似,但不支持完全的关系模型,采用键值进行存储。Hbase是
Bigtable的一个开源实现。Dynamo是amazon的存储系统,虽然同bigtable类似也
是采用键值,但是bigtable主要存储结构或半结构数据,而Dynamo则是完全的无
结构数据,对数据的解释交给应用程序来完成。Cassandra是最初facebook开发的
一套nosql数据库系统,于2008年开源。它采用bigtable类似的数据面向,面向列
存储,同Dynamo类似,采用DHT(distributed hash table)的p2p架构,能无缝的
添加和删除节点。Redis也是一款键值数据库,它提供了丰富的数据结构,如
string、lists,sets, order sets以及hash sets等,并提供对这些数据结构的丰
富操作。Gemfire则是基于内存的数据库,实现了高效的内存数据管理、复制、划
分以及查询等功能。Mongodb则是一个跨平台的、面向文档的nosql数据库。数据
被分组存储在数据集中,被称为一个集合。存储在集合中的文档则被存为键值对
的形式。Couchbase也是款性能优良的面向文档的nosql数据库。Neo4j则是一款采
用java实现的图数据库,它采用了一个极快的图搜索引擎,它将数据存储在图网
络上,而不是表中。

Newsql不仅具有nosql的相关特性,还保持了传统数据库的特性,支持关系数据模
型和sql查询接口。google的spanner是google公司BigTable项目的后继者,是一
个支持分布式计算和传统SQL功能的一套系统,可扩展,多版本,全球分布式还支
持同步复制的数据库,系统通过用GPS和原子钟实现的时间API,这个API能将数据
中心之间的时间同步精确到10ms以内,因此有几个给力的功能:无锁读事务,原
子schema修改,读历史数据无block。

VoltDB通过并行单线程来保证事务一致性和高性能,所有事务被实现为Java存储
过程,所有存储过程(事务)均全局有序,由于避免了锁的使用,因此可以保证
每个事务在所有分区上并行执行完成后才继续执行下一个事务,事务不会乱序执
行。同时通过自动数据分区实现可扩展性。

MemSQL是一款内存数据库,它通过将数据存在内存中,将SQL语句预编译为C++而
获得极速的执行效率。

MemSQL宣称这是世界上最快的分布式关系型数据库,兼容MySQL但快30倍,能实现
每秒150万次事务。

NuoDB 是一款新生的面向云的数据库,它支持完整的sql语句,基于MVCC的事务
(ACID),同时可以优雅的伸缩性,方便地添加或删除节点。

SQLFire是个内存、分布式、基于SQL的缓存,可以与传统数据库协同工作将数据
持久化到磁盘上针对新型的数据库,还出现了一批新的查询、访问接口技术,提
供类似关系数据库查询的功能。

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个
关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的
HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce 平台来查询大型半
结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化
Hadoop 的使用。

--[  2.2 - Computation Framework

Hive是建立在 Hadoop 上的数据仓库基础构架,可以将结构化的数据。文件映射
为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任
务进行运行。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),
这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能够查询存储
在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,
但是由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满
足查询的交互性;相比之下,Impala的最大特点也是最大卖点就是它的快速。

HAWQ能够在Hadoop分布式文件系统中提供最纯粹的并行SQL处理。这是一个类似于
Cloudera Impala的SQL in Hadoop功能,它的一些特性包括:动态Pipelining,
高级数据库查询优化器,纵向扩展功能,SQL兼容功能,交互式查询,深度分析功
能以及普遍的Hadoop格式支持等。Hadapt的适应分析平台结合了SQL和Hadoop。前
者是传统的数据库软件,后者是新型分析大规模数据的技术。这一平台旨在为用
户提供数据和分析工作兼容的系统,加州伯克利大学AMPLab也开发了名为
Shark的大数据分析系统,Shark想成为一个既支持大数据SQL查询,又能支持高级
数据分析任务的一体化数据处理系统。Shark基于Scala语言的算子推导实现了良
好的容错机制,因此对失败了的长任务和短任务都能从上一个“快照点”进行快速
恢复。

互联网的兴起,导致对流式数据处理的要求越来越高。MapReduce等系统主要解决
的是对静态数据的批量处理,启动计算时,一般数据已经到位了。而流式计算系
统在启动时,一般数据并没有完全到位,而是源源不断地流入。因此产生一些其
他技术框架用于处理流式、实时数据。S4是雅虎开源的一套通用、分布式、可扩
展、部分容错、具备可插拔功能的平台。流式数据处理平台,雅虎之所以开发S4
系统,主要是为了解决它现实的问题:搜索广告的展现。Storm是由来自
BackType的NathanMarz开发,后来BackType被Twitter收购并开源,随之也闻名天
下。Storm核心代码是由Clojure这门极具潜力的函数式编程语言开发的,这也使
得Storm格外引人注目。Storm可以用于3种不同场景: 事件流(stream
processing),持续计算(continuous computation)以及分布式RPC
(DistributedRPC)。针对这些场景,Storm设计了自己独特的计算模型。Spark
是一种可扩展的数据分析平台,发源于美国加州大学伯克利分校AMPLab的集群计
算平台,立足于内存计算,从多迭代批量处理出发,兼收并蓄数据仓库、流处理
和图计算等多种计算范式,是罕见的全能选手。它整合了内存计算的基元,因此,
相对于 Hadoop 的集群存储方法,它在性能方面更具优势。Spark 是在 Scala 语
言中实现的,并且利用了该语言,为数据处理提供了独一无二的环境。Flume是
Cloudera公司开源的一款高性能、高可能的分布式日志收集系统。它内置的各种
组件非常齐全,用户几乎不必进行任何额外开发即可使用。传统的MapReduce框架
在map和reduce阶段都需要将结果写入磁盘,因此很难显示的支持迭代编程。为此
出现了不少的迭代编程的框架.Haloop是一个Hadoop MapReduce框架的修改版本,
其目标是为了高效支持 迭代,递归数据 分析任务,如PageRank,HITs,
K-means,sssp等。递归的连接可能在map端(K-means),也可能在reduce端
(PageRank)。Haloop的基本思想是缓存 循环不变量(即静态变量) 到salve
nodes。每次迭代重用这些数据。iMapReduce是一种基于 MapReduce 的迭代模型,
但是它的静态调度策略和粗粒度的 task 可能会导致资源利用不佳和负载不均。
iHadoop实现了MapReduce 的异步迭代,但是在 task 之间的复用上并无太大改进。
Twister是美国印第安纳大学对Hadoop的改良研究,主要针对Hadoop迭代的改良。

大规模的图处理一直以来是研究的热点,比如交通路线,疾病蔓延,文章引用等,
社交网络图等。mapreduce由于其计算模型本身的特性,使得它天生并不适合用来
做大规模图处理,作为一个链式任务处理计算模型,前一个处理过程必须将整个
图的状态保存下来供下一个处理过程使用,增加了序列化和反序列化的开销,使
得整个任务的完成变的很漫长。Pregel是一个用于分布式图计算的计算框架,主
要用于图遍历(BFS)、最短路径(SSSP)、PageRank计算等等。Apache Giraph
是ASF社区的Incubator项目,由Yahoo!贡献,是BSP的java实现,专注于迭代图计
算(如pagerank,最短连接等),每一个job就是一个没有reducer过程的hadoop
job。Apache Hama也是ASF社区的Incubator项目,与Giraph不同的是它是一个纯
粹的BSP模型的java实现,并且不单单是用于图计算,意在提供一个通用的BSP模
型的应用框架。GraphLab CMU的一个迭代图计算框架,C++实现的一个BSP模型应
用框架,不过对BSP模型做了一定的修改,比如每一个超步之后并不设置全局同步
点,计算可以完全异步进行,加快了任务的完成时间。Trinity是微软开发的一套
图计算平台,包含一个建立在分布式内存云平台上的图数据库及一个计算框架。
通过一个纯内存的key-value存储数据库实现快速访问。Spark主要用来解决
Mapreduce所不擅长的两类计算:迭代计算和交互式分析。核心在于将数据存在内
存,避免重复的load。采用scala语言实现,提供了类似于DryadLINQ的函数式编
程接口。Spark为并行编程主要提供了两个抽象:RDD和并行操作,此外它还提供
了两种类型的共享变量支持:广播变量和累加器。PowerGraph将基于vertex的图
计算抽象成一个通用的计算模型:GAS模型,分为三个阶段:Gather,Apply和
Scatter用于解决Power-Law分布图。

多年来,有很多将Hadoop或MapReduce应用到GPU的科研项目。 Mars可能是第一个
成功的GPU的MapReduce框架。采用Mars技术,分析WEB数据(搜索和日志)和处理
WEB文档的性能提高了1.5-1.6倍。 根据Mars的基本原理,很多科研机构都开发了
类似的工具,提高自己数据密集型系统的性能。相关案例包括 分子动力学、数学
建模(如Monte Carlo)、基于块的 矩阵乘法、财务分析、图像处理等。

还有针对网格计算的BOINC系统,它是一个快速发展、志愿者驱动的中间件系统。
尽管没有使用Hadoop,BOINC已经成为许多科研项目加速的基础。例如,
GPUGRID是一个基于BOINC的GPU和分布式计算的项目,它通过执行分子模拟,帮助
我们了解蛋白质在健康和疾病情况下的不同作用。多数关于医药、物理、数学、
生物等的 BOINC项目也可以使用Hadoop+GPU技术。

--[  2.3 - Tools and Languages

除针对数据的存储和计算框架外,也出了一批开源的分析挖掘工具以及语言。由
于处理数据能力的大幅提升,需要我们进行更深度化、自动化的挖掘,以及对挖
掘结果的视觉化展现。R是一个有着统计分析功能及强大作图功能的软件,在
GPL2+下免费发行。R语言是面向对象的统计编程语言,是由AT&T贝尔实验室所创的
S语言发展出的一种方言。R提供了强大的统计库以及图形展现能力,并能够被多
种语言所调用。RHadoop是由Revolution Analytics发起的一个开源项目,它可以
将统计语言R与Hadoop结合起来。目前该项目包括三个R packages,分别为支持用
R来编写MapReduce应用的rmr、用于R语言访问HDFS的rhdfs以及用于R语言访问
HBASE的rhbase。python是一种通用性语言,比R更具有强大的语言功能。python
中有众多的科学计算包,其中numpy和scipy分别提供了多维数组功能以及数值计
算功能。scikit-learn则包含机器学习领域的各种算法,可以实现监督学习(支
持向量机,贝叶斯),无监督学习(聚类算法),以及其他的一些数据集操作的
算法。Ruby,Perl等语言也可用于进行一些数据的处理工作。是Axiis框架,它提
供了一种简洁的标记语言来实现丰富多彩的可视化效果。Axiis构建在Degrafa之
上。Degrafa是为Flex应用的一个开源声明式图形框架,可简化图形绘制——Axiis
极大地利用了这一优点。Degrafa本身并不足以构建一个类似Axiis的框架,因为
它不具备把数据绑定到图形的默认能力。Axiis可以认为是对Degrafa的扩展。
Mahout 是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用
MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。weka是基于java的
一款开源、免费的机器学习和数据挖掘软件,提供了各种数据挖掘算法的开源实
现,weka主要用做单机实验,但目前也在对weka进行并行化改造,让其具有处理
大数据的能力。

--[  3 - Security

随着数据的进一步集中和数据量的增大,对海量数据进行安全防护变得更加困难,
数据的分布式处理也加大了数据泄露的风险,信息安全正成为制约大数据技术发
展的瓶颈。2012年瑞士达沃斯论坛上发布的《大数据大影响》报告称,数据已成
为一种新的经济资产类别,就像货币或黄金一样。奥巴马政府已把“大数据”上升
到国家战略层面,2012年3月,美国宣布投资2亿美元启动“大数据研究和发展计
划”,借以增强收集海量数据、分析萃取信息的能力。美国政府认为,大数据是
“未来的新石油”,一个国家拥有数据的规模、活性及解释运用的能力将成为综合
国力的重要组成部分,未来对数据的占有和控制甚至将成为继陆权、海权、空权
之外国家的另一个核心资产。大数据加大隐私泄露风险。大量数据的汇集不可避
免地加大了用户隐私泄露的风险。一方面,数据集中存储增加了泄露风险;而这
些数据不被滥用,也成为人身安全的一部分;另一方面,一些敏感数据的所有权
和使用权并没有明确界定,很多基于大数据的分析都未考虑到其中涉及的个体隐
私问题。如棱镜事件,已经引起全球对于隐私的思考。大数据威胁现有的存储和
安防措施。大数据存储带来新的安全问题。数据大集中的后果是复杂多样的数据
存储在一起,很可能会出现将某些生产数据放在经营数据存储位置的情况,致使
企业安全管理不合规。大数据的大小也影响到安全控制措施能否正确运行。安全
防护手段的更新升级速度无法跟上数据量非线性增长的步伐,就会暴露大数据安
全防护的漏洞。

—[  4 - Study Resource
 目前随着大数据的兴起,网上有了很多的学习资源以及社区。比如IBM的大数据
 学院、北理工大数据论坛、人大经济论坛等。目前网络也也有很多公开的数据源,
 比如美国政府网、香港公共数据开放网站、肯尼亚公共数据开放平台、
 datamarket、数据堂、搜狗实验室、百度开放社区等。