大数据技术大家谈

大数据技术大家谈

puppet是什么

银河系管理员 回复了问题 2 人关注 1 个回复 1071 次浏览 2018-02-09 10:33 来自相关话题

关于spark和 hive 10亿数量级的计算

fish 回复了问题 3 人关注 2 个回复 3016 次浏览 2018-01-31 16:11 来自相关话题

请问一下老师 处理大规模数据,除了graphlab create 还有别的库比较方便吗

fish 回复了问题 2 人关注 1 个回复 1247 次浏览 2017-11-28 19:02 来自相关话题

Hadoop与Spark如何选择

fish 回复了问题 2 人关注 1 个回复 1385 次浏览 2017-09-10 21:26 来自相关话题

使用Elasticsearch、Kafka和Cassandra构建流式数据中心

夜行侠 回复了问题 2 人关注 1 个回复 4635 次浏览 2017-06-25 21:34 来自相关话题

程序员应该访问的最佳网站

回复

fish 发起了问题 1 人关注 0 个回复 2863 次浏览 2017-06-22 12:14 来自相关话题

求一个数据量很大的文件,行与行中某一个字段(列)的交集数

开心就好_kxjh 回复了问题 2 人关注 2 个回复 2298 次浏览 2017-05-17 14:29 来自相关话题

整合hive和hbase,zk不释放

inter12 回复了问题 2 人关注 1 个回复 2050 次浏览 2017-05-03 17:35 来自相关话题

关于数据收集

wangxiaolei 回复了问题 2 人关注 1 个回复 1077 次浏览 2017-04-11 16:47 来自相关话题

Storm、Sprak streaming与Flink

wangxiaolei 回复了问题 2 人关注 1 个回复 1964 次浏览 2017-02-04 18:21 来自相关话题

Intel李锐:Hive on Spark解析

王景隆 回复了问题 2 人关注 1 个回复 1531 次浏览 2016-12-28 10:11 来自相关话题

在机器硬件选型的考虑与依据

fish 回复了问题 3 人关注 1 个回复 1653 次浏览 2016-12-15 09:25 来自相关话题

大数据入门,应该怎么学,看什么比较好!

wgb 回复了问题 3 人关注 1 个回复 1606 次浏览 2016-07-18 00:00 来自相关话题

如何进行数据采集

Robin_TY 回复了问题 4 人关注 2 个回复 1426 次浏览 2016-07-06 20:16 来自相关话题

请问有没有人用过DeepSpark?

回复

大海长歌 发起了问题 1 人关注 0 个回复 1580 次浏览 2016-07-04 17:18 来自相关话题

日志传输可靠性

fish 回复了问题 2 人关注 3 个回复 1515 次浏览 2016-06-16 18:36 来自相关话题

大数据的走向会无休止吗?spark之后有flink,在之后呢?

目田 回复了问题 5 人关注 3 个回复 5005 次浏览 2016-05-01 17:14 来自相关话题

apache版本的lzo安装

唯思可达 回复了问题 2 人关注 3 个回复 2551 次浏览 2016-05-01 12:19 来自相关话题

百度:大数据营销与可视化设计(PPT)

回复

傲风寒 发起了问题 2 人关注 0 个回复 2726 次浏览 2016-04-19 11:58 来自相关话题

梁宇明《Hulu大数据实践》演讲PPT

admin 发表了文章 9 个评论 9035 次浏览 2015-10-28 14:52 来自相关话题

题目:Hulu大数据实践 内容简介:Hulu大数据架构概览;lambda architecture构建与应用;Void - Docker on Yarn原理及架构;Nesto,distributed query engine for ...查看全部
题目:Hulu大数据实践

内容简介:Hulu大数据架构概览;lambda architecture构建与应用;Void - Docker on Yarn原理及架构;Nesto,distributed query engine for nested data

梁宇明.jpg

 
演讲人:梁宇明
演讲人介绍:Hulu资深研发主管,毕业于清华大学自动化系,主要负责Hulu大数据平台构建和广告智能算法研发。关注的技术领域包括海量数据的离线计算和流式计算,OLAP,云计算。
 
现场没有来得及回答的问题,我们将邀请主讲人继续在这里互动回答。

演讲PPT在此:
 

李扬《Apache Kylin 深入之旅 - Streaming及Plugin 架构探秘》演讲PPT

李扬 发表了文章 4 个评论 7573 次浏览 2015-10-28 14:45 来自相关话题

题目:Apache Kylin 深入之旅 - Streaming及Plugin 架构探秘 内容简介:Apache Kylin一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最 ...查看全部
题目:Apache Kylin 深入之旅 - Streaming及Plugin 架构探秘

内容简介:Apache Kylin一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。本次演讲李扬将对Kylin Streaming及Plugin架构进行深入介绍。

李扬.jpg

演讲人:李扬
演讲人介绍:Apache Kylin committer & PMC member, Sr. Architect of eBay CCOE

现场没有来得及回答的问题,我们将邀请主讲人继续在这里互动回答。

演讲PPT在此:
 

马如悦《百度OLAP实战》演讲PPT

zeng_ma2012 发表了文章 1 个评论 6618 次浏览 2015-10-28 14:35 来自相关话题

题目:OLAP in Action(百度OLAP实战) 内容简介:主要讲百度OLAP系统在整个大数据处理中的定位,OLAP系统的架构组成,及里面的关键核心技术,及其在百度内部的应用实践。 ...查看全部
题目:OLAP in Action(百度OLAP实战)

内容简介:主要讲百度OLAP系统在整个大数据处理中的定位,OLAP系统的架构组成,及里面的关键核心技术,及其在百度内部的应用实践。


马如悦.jpg


演讲人:马如悦
演讲人介绍:百度大数据部主任架构师,是百度在线服务架构和OLAP数据库技术负责人,之前是百度分布式计算技术负责人。
 
现场没有来得及回答的问题,我们将邀请主讲人继续在这里互动回答。

演讲PPT在此:


 

puppet是什么

回复

银河系管理员 回复了问题 2 人关注 1 个回复 1071 次浏览 2018-02-09 10:33 来自相关话题

关于spark和 hive 10亿数量级的计算

回复

fish 回复了问题 3 人关注 2 个回复 3016 次浏览 2018-01-31 16:11 来自相关话题

请问一下老师 处理大规模数据,除了graphlab create 还有别的库比较方便吗

回复

fish 回复了问题 2 人关注 1 个回复 1247 次浏览 2017-11-28 19:02 来自相关话题

Hadoop与Spark如何选择

回复

fish 回复了问题 2 人关注 1 个回复 1385 次浏览 2017-09-10 21:26 来自相关话题

使用Elasticsearch、Kafka和Cassandra构建流式数据中心

回复

夜行侠 回复了问题 2 人关注 1 个回复 4635 次浏览 2017-06-25 21:34 来自相关话题

程序员应该访问的最佳网站

回复

fish 发起了问题 1 人关注 0 个回复 2863 次浏览 2017-06-22 12:14 来自相关话题

求一个数据量很大的文件,行与行中某一个字段(列)的交集数

回复

开心就好_kxjh 回复了问题 2 人关注 2 个回复 2298 次浏览 2017-05-17 14:29 来自相关话题

整合hive和hbase,zk不释放

回复

inter12 回复了问题 2 人关注 1 个回复 2050 次浏览 2017-05-03 17:35 来自相关话题

关于数据收集

回复

wangxiaolei 回复了问题 2 人关注 1 个回复 1077 次浏览 2017-04-11 16:47 来自相关话题

Storm、Sprak streaming与Flink

回复

wangxiaolei 回复了问题 2 人关注 1 个回复 1964 次浏览 2017-02-04 18:21 来自相关话题

Intel李锐:Hive on Spark解析

回复

王景隆 回复了问题 2 人关注 1 个回复 1531 次浏览 2016-12-28 10:11 来自相关话题

在机器硬件选型的考虑与依据

回复

fish 回复了问题 3 人关注 1 个回复 1653 次浏览 2016-12-15 09:25 来自相关话题

大数据入门,应该怎么学,看什么比较好!

回复

wgb 回复了问题 3 人关注 1 个回复 1606 次浏览 2016-07-18 00:00 来自相关话题

如何进行数据采集

回复

Robin_TY 回复了问题 4 人关注 2 个回复 1426 次浏览 2016-07-06 20:16 来自相关话题

请问有没有人用过DeepSpark?

回复

大海长歌 发起了问题 1 人关注 0 个回复 1580 次浏览 2016-07-04 17:18 来自相关话题

日志传输可靠性

回复

fish 回复了问题 2 人关注 3 个回复 1515 次浏览 2016-06-16 18:36 来自相关话题

大数据的走向会无休止吗?spark之后有flink,在之后呢?

回复

目田 回复了问题 5 人关注 3 个回复 5005 次浏览 2016-05-01 17:14 来自相关话题

apache版本的lzo安装

回复

唯思可达 回复了问题 2 人关注 3 个回复 2551 次浏览 2016-05-01 12:19 来自相关话题

百度:大数据营销与可视化设计(PPT)

回复

傲风寒 发起了问题 2 人关注 0 个回复 2726 次浏览 2016-04-19 11:58 来自相关话题

外媒ITWorld:Hadoop、Spark和Kafka在数据摄取管道里是平等的

MikanaCu 发表了文章 0 个评论 2007 次浏览 2015-11-23 22:56 来自相关话题

译者:施羽聪 原文链接:http://www.itworld.com/article/2999800/how-apache-kafka-is-greasing-the-wheels-for-big-data.html 小象科技原创作品, ...查看全部
译者:施羽聪
原文链接:http://www.itworld.com/article/2999800/how-apache-kafka-is-greasing-the-wheels-for-big-data.html
小象科技原创作品,欢迎大家疯狂转发;
机构、自媒体平台转载务必至后台留言,申请版权。
 

Apache Kafka能够用于实时摄取多种类型数据,这要归功于:Confluent

 
与大数据相关的最大挑战之一是数据分析。但在分析数据之前需要摄取数据,以便提供给企业用户。这就是Apache Kafka出现的原因。
 
LinkedIn起初开发Kafka这个开源系统是用来管理实时数据流,里面的数据来自网站、应用程序和传感器。
 
但从本质来讲,Kafka作为一种企业的“中枢神经系统”,收集了大量有关用户活动、日志、应用程序指标、股票代码和设备仪器的数据,例如其可用于企业用户消费的实时流。
 
RedMonk的联合创始人、首席分析师Stephen O’Grady说,Kafka被比作ActiveMQ、RabbitMQ这种用于本地实现的技术,或对于云用户而言,可与Amazon Web Service的Kinesis比较。
 
O’Grady补充说,“关注度越来越高,不仅因为这是个高质量的开源项目,还因为在维修工作负载中的使用需求越来越多,比如对于物联网,Kafka处理信息高速流的能力越来越强。”
 
自被LinkedIn构想以来,Kafka获得了来自如Netflix、Uber、Cisco和Goldman等公司的高度支持。在周五它获得了来自IBM的新激励,IBM宣布基于Kafka的两款新服务的可用性在Bluemix平台上通过。
 
IBM新的流分析服务致力用毫秒级的响应时间和即时决策以分析每秒数以万计的事件。IBM信息中心,现在在测试阶段,向云应用提供可伸缩、分布式、高吞吐、异步的消息传送,使用REST或Apache Kafka API(应用程序编程接口)与其他应用程序通信。
 
Kafka在2011年开源。去年,三位Kafka的创立者成立了Confluent,该创业公司致力于帮助企业在大规模生产中使用它。
 
Kafka其中一位创立者、Confluent的创始人之一Neha Narkhede说:“在LinkedIn爆炸性的增长阶段中,我们跟不上迅速增长的用户群和数据,那些可以用来改善用户体验。”
 
Narkhede解释说“Kafka可用来移动全公司数据,并且作为一个持续的自由流动的流可在几秒内向有需要的用户提供。并且它确实有如此规模。”
 
对LinkIn过去的影响是“转型”,她说,如今LinkedIn在生产中仍然留有最大的Kafka部署,每天超过1.1万亿条消息。
 
与此同时,Confluent通过订阅提供先进的管理软件,以帮助大公司在生产系统中运行Kafka。其中一些客户是主流大型零售商和“美国最大的信用卡发行商之一。”Narkhede说。后者在使用实时欺诈保护技术,她说。
 
Kafka是“一个令人难以置信的快速消息总线”,一份451项的研究表明,这有助于快速集成很多不同类型的数据,Jason Stamper说。“这就是为什么它会成为一个最流行的选择的原因。”
 
他提到,除了ActiveMQ和RabbitMQ之外,Apache Flume也提供相似的功能,Storm和Spark Streaming在很多方面也有相似之处。
 
在商业空间,Confluent的竞争对手包括IBM InfoSphere Streams、Informatica的Ultra Messaging Streaming Edition、SAS的Event Stream Processing Engine (ESP) 和Software AG的Apama,还有Tibco的StreamBase和SAP的Aleri,Stamper补充道。较小的竞争对手包括DataTorrent、Splunk、Loggly、Logentries、X15 Software、Sumo Logic和Glassbeam。
 
在云方面,AWS的Kinesis 流处理服务“与Redshift数据仓库和S3存储平台的集成类似,有其他的好处。”他补充道。
 
Teradata新发布的Listener是另一个竞争者,其也是基于Kafka的,Forrester Research副总裁和首席分析师Brian Hopkins指出。
 
Hopkins说实时数据的趋势非常显著。
 
直到2013年左右,“大数据是大量的数据全部塞进Hadoop。”他说:“可是现在,如果你不这样做,你就已经落后于权利曲线了。”
如今,来自智能手机和其他数据源的数据,给了企业与客户实时交流和提供上下文经验的机会,他说。反过来,取决于快速理解数据的能力。
“物联网就像是手机的第二次浪潮,”Hopkins解释道。“每个供应商都是巨量数据的定位。”
 
因此,技术正相应地调整着。
 
“到了2014年全是Hadoop,然后是Spark,”他说,“而现在,是Hadoop、Spark和Kafka。在如今这个现代化分析架构中,这三者在数据摄取管道里是平等的。”

如何使用大数据对你的网站进行SEO优化

MikanaCu 发表了文章 0 个评论 1347 次浏览 2015-11-14 23:17 来自相关话题

原文链接:http://www.smartdatacollective.com/oxygenmat/354830/how-use-big-data-improve-your-website-s-seo 译者:林炀 小象科技原创作品,欢迎 ...查看全部
原文链接:http://www.smartdatacollective.com/oxygenmat/354830/how-use-big-data-improve-your-website-s-seo
译者:林炀
小象科技原创作品,欢迎大家疯狂转发;
机构、自媒体平台转载务必至后台留言,申请版权。
 
如何使用大数据对你的网站进行SEO优化
我以前曾经说过,大部分的数据爱好者们都认为“大数据”一词很难定义。
因此,我认为现在先强调一下我对大数据的简单定义是非常有必要的:任何使用类似Excel电子表格、PowerPoint或其它传统的文本处理器无法处理的大量数据集,它们都可以被称为“大数据”。
其实不论我们自己是否注意到,我们中的大部分人都和大数据息息相关。这其中我最喜欢的一个例子就是每当你使用Internet上网时,你就已经在接触大数据。
包括我自己在内的许多人都曾经讨论过该如何使用大数据来改善你的整体业务。然而,你是否有花时间考虑过大数据是否能用来对你的网站进行SEO优化呢?
除了依照你以前的实践经验来进行SEO优化外,尝试去寻找到一条创造性的方式并在此基础上付出努力来得到最佳的结果也是至关重要的,通过这种方法,才能在和你的竞争对手的竞争中保持领先。
在本文中,我将展示大数据是如何通过自身的优势来进行SEO优化。
在商业中,使用大数据最重要的部分通常不完全是工具,最重要的部分是在于寻找到一条创造性的方法来获得真知灼见,以此来为自己做出正确的商业决策提供帮助。如果没有使用一些正确的工具的话,那么你就绝对无法得到想要的真知灼见。
因此,你需要对各式各样的工具保持一个开放的思想,并且在得到数据后能灵活的使用这些工具来为你的商务做出贡献。
你对SEO的目标应该是:
· 确定你的目标用户群并且很明确的知道他们感兴趣的是什么
· 通过这方面的知识在战略上定位自己,以此使你的网页在有机(非付费)搜索中更容易被找到。
我会把上面提到的第一点分解为几个不同的阶段,并提供一些大数据工具在每个阶段来给予你帮助。
1. 找出你最大的竞争对手
如果要找到你的目标用户群是谁,我找不出有什么办法比监视你的竞争对手并定位他们的目标用户群更好了。
幸运的是,这个步骤是最简单的,并且我们所使用的大数据工具也是最容易使用的——Google搜索,你可能已经对它很熟悉了。
只需要在你的浏览器中打开Google,并输入几个你认为是你的网站的关键词。如果在这个阶段你对你选的关键词并不确定,不要担心,只需要输入你大脑里所想到的所有有关的词语,我们会在下一步来进行调整。
记下在有机(非付费)搜索网站上搜索出的最开头的十个网页,这些就是你在有机搜索网站上最大的竞争对手了。
接下来,看看在搜索结果一旁的付费广告,同样记下最开头的十个,如果并没有十个,那么就点到搜索结果的下一页。如果你不能找到任何广告,那就不要再使用这个关键词来进行搜索了,它很可能是带不来任何收益的词。
2. 确定你理想的关键词和更多的竞争对手
接下来,你需要确保你有正确的关键词,并且确定的找出你最大的竞争对手。
在这步里我们使用的大数据工具是SEMRush,它是一个付费SEO工具,但在这个步骤里我们只需要使用它的免费版本。
在SEMRush中输入你所知道的最知名的竞争对手的网站(或者你自己的),这样你就能看到一列在你所处的细分市场领域的其它对手。然后,你就可以确定的找出和你的网站所相关业务的最重要的关键词。
在本阶段,其它你可以进一步使用的大数据工具是Google Adwords Keyword Planner、Amazon、EBay和ClickBank,它们同样也可以确定出你的关键词。
上诉过程将有助于你获得更多的关键词,并使你明确的了解到你的前景所需要的是什么。
3. 确定你理想的目标用户群
接下来,是时候来确定你的目标用户群了,同时还需要知道去哪里才能找到他们。你需要了解你的目标用户群的具体地理位置、他们的年龄、他们的兴趣和他们是否是消费群体以及其他企业。如果你使用的工具是QuickBooks库存管理,那么你理想的目标用户群将会和其他企业有关,而不单单只是关注个体。
其它你可以使用的大数据工具有SimilarWebAlexaQuantCastCompete等等。
接下来让我们开始使用QuantCast吧。在QuantCast的搜索框中输入每一个之前记下的竞争对手名单,点击搜索,你会得到很多非常有用的信息,其中包括访问竞争对手网站的人口统计,目标用户群的兴趣(通过他们的搜索记录和他们访问的网站)和地理信息。请确保上诉的每一条你都有点进去查看更详细的信息。
之后去 Alexa寻找更多的信息。在这里你可以找到你的竞争对手在搜索引擎中的“最常被搜索关键词”,并且还有你的竞争对手们的网站URL。因此,如果使用QuantCasta搜索有任何的困难或瑕疵的话,那么使用Alexa是一个不错的选择。
然后,在SimilarWeb上使用你的竞争对手的URL来找出你的目标用户群在哪些窗口会保持更长的浏览时间,在哪些地方会选择关闭掉网站。
你可以点击“Referrals”按钮来显示网页的入站流量和出站流量。所有的网页访问者在来到竞争者网页之前去了哪些网页,而在离开竞争者网页之后他们又去了哪里。
这些操作将带给你很多有关于你的目标群体有价值的信息,并且有可能可以查找出更多的竞争对手,与此同时你还可以监视它们。
4. 优化你的网站
现在你对你的目标用户所了解的信息包括:你的目标用户是谁、他们想要什么、你在哪里可以找到他们。只需要使用这些信息,你就可以在搜索引擎中优化你的网站。
在一般人能接受的程度上将你之前得到的关键词放到你的站点上,可以放到Meta tags中和网页的内容中。但是可别把关键词写到图片上,搜索引擎可读不出来你图片上写了什么。举个例子,假如你有个对比商务手机的图表,比较聪明的做法是当你上传这张图表的时候,同时将足够的描述文字写到列有这个图表的网页上。否则,你的目标用户群很有可能永远都不会在Google上搜到这个图表。
另外,你可以关注一下你的理想目标用户群登出网站的地方。如果这是一个论坛,那么就尝试着让论坛活跃起来。如果是一个博客,那就看看你是否能让游客在上面发博文,诸如此类。
现在你应该知道,使用大数据都是在获取一些你能够利用的赋有深意、近乎完美的信息,以此来帮助你的商务运作。即使是在不太受关注的SEO上大数据也是需要考虑的。
现在就开始着手让大数据来为你工作吧。

13位CEO、CTO总结大数据实践:13个真实世界的问题

MikanaCu 发表了文章 0 个评论 1764 次浏览 2015-11-03 23:29 来自相关话题

13位CEO、CTO总结大数据实践:13个真实世界的问题 我们采访了13位高管级别的大数据从业者,他们就各自公司正在进行的工作,还有如今大数据对自己生活的影响进行了回答。 受访者包括: Dr. G ...查看全部
13位CEO、CTO总结大数据实践:13个真实世界的问题

我们采访了13位高管级别的大数据从业者,他们就各自公司正在进行的工作,还有如今大数据对自己生活的影响进行了回答。

受访者包括:
Dr. Greg Curtin,Civic Resource Group的CEO兼创始人;
Mikko Jarva,Comptel Intelligent Data的CTO;
Matt Pfeil,DataStax的CCO兼联合创始人;
Dan Potter,Datawatch的CMO;
Gena Rotstein,Dexterity Ventures, Inc.的CEO兼创始人;
Puneet Pandit,Glassbeam的创始人兼CEO;
Philip Rathle,Neo Technology, Inc.的产品VP;
Guy Kol,NRGene的创始人兼研发VP;
Hari Sankar,Oracle的产品管理VP;
Ray Kingman,Semcasting的CEO;
Scott Sundvor,6SensorLabs的CTO;
Vikram Gaitonde,Solix Technologies的产品VP;
Paul Kent,SAS的大数据SVP;
Margaret Roth,Yet Analytics的联合创始人兼CMO。
下面是他们的回答节选:
1、我们从缩小定性与定量间的差距开始。为了获得体验数据,我们为硬件和软件搭建了不同的系统:记录某人的位置、他们的同伴、他们在做什么,还有下一步的打算。通过评估数据来源,我们得以预测客户的所需与所求,从而为他们提供更佳的用户体验。
2、我们已经在使用大数据来提升LA运输系统了,还有实施San Diego的WaterSmart Target项目,将Santa Monica打造成一个智能化城市,还有将Mission Viejo的政府电子化。
3、这是一个迭代进程。通过确定水稻基因组和小麦基因组的序列,我们打开了解决阻碍繁殖工作进展问题的巨大机遇。我们可以快速有效地改善非洲还有印度的农作物产量。过去的十年中,一支团队一直在研究小麦的基因排序,花费了高达5千万美元的资金,却仅完成了研究工作的17分之一。我们用12GB缺乏映射的基因数据,花费仅50万美元进行技术改造,再花费大约100万美元,一年之内就能完成这项工作。
4、我们管理慈善机构的方式需要进行巨大的改变。我们尚未解决的一些问题在经济上的花费如何?大数据正在提高效率与性能。
5、最主要的进展表现在医疗保健与医院方面。通过远程监控医院的病人,从作出反应转变为预防或积极处理,这样就提高了康复率,并让我们在问题发生前就将它解决掉。
6、这只是开始,大数据正好遇到一个拐点,每台设备(汽车、家电、智能手机和互联网)都有2500万到5000万个读数。收集到设备信息之后,分析师会将大数据的价值进行略微提高。例如,Home Depot公司可以更好地管理商店存货,同时积极联系终端用户,通知他们该采取行动了(比如该换过滤器、购买更多电灯泡、让空调系统开启服务了)。大数据让需求成为可预测的信息。
7、物联网分析是大数据的杀手级应用。对相关制造商来说,要想积极主动挖掘M2M数据流,支持分析是关键的。我们可以在预定的时间将设备离线来进行预防性维护,与计划外的紧急情况造成的等待相比,这样并不会对工作流造成负面影响。
8、Telco space上的客户项目正在致力于利用所产生的数据来更好地理解客户,需要在客户生命周期管理中,找出创造价值的机会,并用积极、可预期的方式维护设备、网络与科技。使用预防性维护来预测设备与网络故障,并确认问题根源。识别数据存储与报告方面的用例,目前的需求是将数据保存10年。敏捷存储与访问数据能够帮助大家满足这些需求。目前尚未用到预期分析,不过它们会让telcos化被动为主动。
9、两个例子:
1)知识产权型科技公司的客户很注重文档保护,由于存储的信息量,找到问题根源并且在公司内部找到正在试图下载受保护财产的那个人需要好几个月的时间。使用Solix的公司可以构建一个控制面板,在几分钟内提供相关信息,找到试图下载文件的人,拒绝他们的访问并让他们离开公司。因此公司的最终预测结果是:有人将会离开公司。这是在现实世界分析大数据所带来的一个意想不到的结果,很有用。
2)主流航空公司的头等舱有一位乘客在飞机还没离开登机门之前就在twitter上抱怨食物太差,而他在twitter拥有大量粉丝,此人的一名粉丝正是该航空公司的地勤人员,他就能给飞机的乘务组人员发送一条信息,让他们为这名乘客提供出色的用户体验服务,这名乘客在着陆后发twitter称赞航空公司的出色服务。该航空公司现在还有一个实时的社交媒体监控面板,查看大家发表的言论,以便提前解决顾客的问题。
10、两个例子:
1)汽车制造商有三个不同的SAP装置。之前构建一个包含三个SAP装置互联的业务产品库需要两年时间,而现在只要几分钟就可以完成访问这三个装置、拿到报告、提取数据、完成转化和分析的所有工作,为顾客节省了大量的成本与时间。
2)一名加拿大的零售商每天早上将“green sheet”报告打印出来,并对每一个SKU执行销售和库存的手工调账。我们拿到了报告,将其数字化,提取数据并在几分钟之内完成对账工作。
11、我个人有一个Nest的恒温器,还有一个可与互联网连接的体重秤。体重秤通过健康商店与iPhone同步,提供无价的信息,两者的用户体验都很棒。软件的核心是数据库,由于使用数据的地方越来越多,数据库将会到处渗透。
12、我们用昨晚的数据进行老式的批处理操作,再进行实时分析,上个月我跟四个分析师谈过,他们都有各自的术语:insights into action, transactional analytics, translytics, operationalizing analytics。到2018年,有70%的公司将会使用运营分析(operational analytics)来做决策。
13、价值最高的部分完全依赖于你所对话的公司,大数据所处理的问题非常广泛,许多企业在改善一对一的客户互动时找到了价值;其他则通过识别和消除资源浪费,致力于有效的业务操作;检测欺诈是金融服务中的一个重要领域;在生命科学中,更快更有效的研究出药物有着本质的价值;而公共部门公司则运用大数据解决完全不同的问题。因此,想要使价值最大化,真没有唯一的公式。在与首次关注大数据的客户合作时,我们希望从发现工场开始,帮助他们发现最佳的工作项目,并让业务与技术的利益相关者都参与进来,确保公司内部一致,以使得成功的可能性最大化。

译者:孙薇
原文链接:https://dzone.com/articles/real-world-problems-being-solved-by-big-data-today
 

盘点靠深度学习展露头脚的五大前沿创业公司

MikanaCu 发表了文章 0 个评论 1539 次浏览 2015-11-01 23:28 来自相关话题

译者:赵屹华 原文链接:http://blogs.nvidia.com/blog/2015/10/14/5-deep-learning-startups/ 小象科技原创作品,欢迎大家疯狂转发; 机构、自媒体平台转载务必至后台 ...查看全部
译者:赵屹华
原文链接:http://blogs.nvidia.com/blog/2015/10/14/5-deep-learning-startups/
小象科技原创作品,欢迎大家疯狂转发;
机构、自媒体平台转载务必至后台留言,申请版权。
 
盘点靠深度学习展露头脚的五大前沿创业公司
 
广告牌能猜测你的年龄;拍照App能识别你和你的宠物;数字计算器能解二次方程,或是教你解方程。 
 
多亏了深度学习 —— 几年前在手机上不可思议的事情如今都成为了实现。 
 
大量人工智能和深度学习产品借助计算机视觉和自然语言处理技术,用计算机来解释它们周围的世界。 
 
新一代创业公司正将这些技术植入手持设备中。NVIDIA的GPU和深度学习软件加强了这方面的工作。 
 
以下是为你盘点的靠深度学习展露头脚的五大创业公司:
 
Real Life Analytics:精准、自动的广告  
 
为了加强店内的定向广告,英国公司Real Life Analytics给零售商们提供了一套带有网络摄像头和服务软件的显示屏。似乎很简单吧。但其内部的深度学习软件却有着惊世骇俗之举。 
 
借助显示屏上的网络摄像头,内置的深度学习神经网络能推测出你的年龄和性别。几毫秒之后,就会弹出一款符合你信息的目标广告。同时,其内部有一款使用cuDNN-accelerated Caffe framework的深度学习训练软件DIGITS,这款深度学习网络工具可以实时分析你的注意力集中度。当然,它也运行在我们的Tegra芯片上。
 
ZZ Photo :宠物识别助手  
 
ZZ Photo 是一家乌克兰创业公司开发的,它能帮助你从电脑里堆积的上千张照片中挑选出想要用的几张。使用支持CUDA的GPU加速神经网络计算,ZZ Photo能检测电脑里的照片。然后筛选和整理这些照片,分别打上人物、场景、宠物等标签。 
 
没错,ZZ Photo的DeepPet算法能分辨你的拉布拉多犬和吉娃娃犬。在识别猫猫狗狗这方面,它比传统的物体识别算法的准确度至少高5倍。 
 
ZZ Photo的DeepPet算法比传统的物体识别算法的准确度至少高5倍。
 
MicroBlink:冲击榜首的数学计算APP  
 
随着近来学生陆续返校,九月上旬MicroBlink的PhotoMath应用一度跃升至美国地区iPhone免费应用下载的榜首。这款应用实时地读入并计算数学题,只需用智能手机或是平板电脑对着题目拍一张照片即可。
 
MicroBlink成立于克罗地亚的萨格勒布市,它使用NVIDIA的GPU来训练PhotoMath的深度学习算法。这款应用目前支持分数计算、不等式、二次方程等题目。它向用户一步步讲解如何解数学题,使数学学习变得轻松。家长们关心如何用这款工具检查孩子们的回家作业。
 
MicroBlink的PhotoMath应用实时读入并计算数学题。
 
HyperVerge:创新的图像鉴别  
 
不再需要翻阅自拍来找你驾照的照片啦。HyperVerge,起家于印度的创业公司,已经开发了Silver。这款手机图片识别应用使用GPU处理数据和训练应用引擎。 
 
该应用可以整理移动设备上存储的照片。它将照片分为人物、截图、备忘几类。它甚至可以鉴别文档 —— 这个类别包括手写笔记、证件扫描和支票。HyperVerge另外还开发了删除低质量和冗余照片的工具。
 
Viserez:不需关键字的搜索  
 
如果说一图胜千言,那我们为何要在搜索引擎输入那么多文字呢?ViSenze,一家新加坡的创业公司,让人们能够用图片搜索。将一张图片丢入其深度学习平台,系统很快就能吐出大量相似的图片,根本不需要关键词和人工标注标签。
 
事实上,它的图像识别技术自动给图片打上形状、颜色、模式等属性标签。例如,如果你发现一款裙子,但是想找类似的无袖款,或是你喜欢一只手提包,但想找更多皮质或是尖形的,ViSenze能以惊人的速度和准确率锁定目标。
 
ViSenze图像识别技术支撑的图像搜索功能有着不可思议的准确率。
 

梁宇明《Hulu大数据实践》演讲PPT

admin 发表了文章 9 个评论 9035 次浏览 2015-10-28 14:52 来自相关话题

题目:Hulu大数据实践 内容简介:Hulu大数据架构概览;lambda architecture构建与应用;Void - Docker on Yarn原理及架构;Nesto,distributed query engine for ...查看全部
题目:Hulu大数据实践

内容简介:Hulu大数据架构概览;lambda architecture构建与应用;Void - Docker on Yarn原理及架构;Nesto,distributed query engine for nested data

梁宇明.jpg

 
演讲人:梁宇明
演讲人介绍:Hulu资深研发主管,毕业于清华大学自动化系,主要负责Hulu大数据平台构建和广告智能算法研发。关注的技术领域包括海量数据的离线计算和流式计算,OLAP,云计算。
 
现场没有来得及回答的问题,我们将邀请主讲人继续在这里互动回答。

演讲PPT在此:
 

李扬《Apache Kylin 深入之旅 - Streaming及Plugin 架构探秘》演讲PPT

李扬 发表了文章 4 个评论 7573 次浏览 2015-10-28 14:45 来自相关话题

题目:Apache Kylin 深入之旅 - Streaming及Plugin 架构探秘 内容简介:Apache Kylin一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最 ...查看全部
题目:Apache Kylin 深入之旅 - Streaming及Plugin 架构探秘

内容简介:Apache Kylin一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。本次演讲李扬将对Kylin Streaming及Plugin架构进行深入介绍。

李扬.jpg

演讲人:李扬
演讲人介绍:Apache Kylin committer & PMC member, Sr. Architect of eBay CCOE

现场没有来得及回答的问题,我们将邀请主讲人继续在这里互动回答。

演讲PPT在此:
 

马如悦《百度OLAP实战》演讲PPT

zeng_ma2012 发表了文章 1 个评论 6618 次浏览 2015-10-28 14:35 来自相关话题

题目:OLAP in Action(百度OLAP实战) 内容简介:主要讲百度OLAP系统在整个大数据处理中的定位,OLAP系统的架构组成,及里面的关键核心技术,及其在百度内部的应用实践。 ...查看全部
题目:OLAP in Action(百度OLAP实战)

内容简介:主要讲百度OLAP系统在整个大数据处理中的定位,OLAP系统的架构组成,及里面的关键核心技术,及其在百度内部的应用实践。


马如悦.jpg


演讲人:马如悦
演讲人介绍:百度大数据部主任架构师,是百度在线服务架构和OLAP数据库技术负责人,之前是百度分布式计算技术负责人。
 
现场没有来得及回答的问题,我们将邀请主讲人继续在这里互动回答。

演讲PPT在此:


 

认识反摩尔定律的Java 8神器Speedment,实现数据库代码减半

MikanaCu 发表了文章 0 个评论 2474 次浏览 2015-10-23 22:14 来自相关话题

原文链接:https://dzone.com/articles/java-8-query-databases-using-streams 小象科技原创作品,欢迎大家疯狂转发; 机构、自媒体平台转载务必至后台留言,申请版权。 ...查看全部
原文链接:https://dzone.com/articles/java-8-query-databases-using-streams
小象科技原创作品,欢迎大家疯狂转发;
机构、自媒体平台转载务必至后台留言,申请版权。
 
认识反摩尔定律的Java 8神器Speedment,实现数据库代码减半
  
回想九十年代末期我刚开始写Java数据库应用的时候什么事都得自己做。代码很多,而且异常处理对象转换都得自己写,所以很快代码就变得难以维护了。 就算是今天把Java和数据库这两个不同世界的东西联系起来还是相当的麻烦。
 
你得自己写映射层或者使用Hibernate这样的ORM工具,使用ORM当然会方便点但配置的时候比较容易出错。很多时候ORM也会让程序变慢。 最近我参与了一个新的开源项目Speedment,希望它能减轻广大Java 8数据库应用开发者们的工作量。
 

 
1Speedment是什么 
Speedment是一个针对Java 8所设计开源库,它从一开始就是使用Java 8开发的。Speedment使用标准的流式操作来进行数据库查询所以开发人员不需要学习新的查询API。用了Speedment你就可以从此忘了JDBC和ResultSet了。
 
Speedment可以自动分析数据库并生成代码和文档,所以开发人员不用为数据库实体写任何一行代码。开发人员只需要创建一个数据库并连接到Speedment,剩下的工作都可以交给Speedment了。我们给Speedment设计的吉祥物是个卡通小野兔,所以我在例子里面就用hare这个英文单词作为表的名字。
 
mysql> explain hare;
+-------+-------------+------+-----+---------+----------------+
Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(45) | NO   |     | NULL    |                |
| color | varchar(45) | NO   |     | NULL    |                |
| age   | int(11)     | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
Speedment会分析这个表并生成下面的代码:
public interface Hare extends Entity {
   public final static ReferenceComparableField ID = new ReferenceComparableFieldImpl<>("id", Hare::getId, Hare::setId);
   public final static ReferenceComparableStringField NAME = new ReferenceComparableStringFieldImpl<>("name", Hare::getName, Hare::setName);
   public final static ReferenceComparableStringField COLOR = new ReferenceComparableStringFieldImpl<>("color", Hare::getColor, Hare::setColor);
   public final static ReferenceComparableField AGE = new ReferenceComparableFieldImpl<>("age", Hare::getAge, Hare::setAge);
   Integer getId();
   String getName();
   String getColor();
   Integer getAge();
   Hare setId(Integer id);
   Hare setName(String name);
   Hare setColor(String color);
   Hare setAge(Integer age);
   /** Graph-like traversal methods eliminating JOINs */
   Stream findCarrotsByOwner();
   Stream findCarrotsByRival();
   Stream findCarrots();
}

2查询 
下面的代码是对Hare表进行查询的一个例子:
List oldHares = hares.stream()
   .filter(AGE.greaterThan(8))
   .collect(toList());

3智能流 
上面的代码看起来似乎会需要用到Hare表里所有的行,然而事实并非如此。这也就是它“智能”的地方。运行到collect()的时候,它会知道需要把Hare表里的AGE与8进行比较所以可以减少对数据库的压力。如果你所写的过滤条件更多那么智能流的内容也就更少。下面是另一个例子:
 
long noOldHares = hares.stream()
   .filter(AGE.greaterThan(8))
   .mapToInt(Hare::getAge)
   .sorted()
   .count();
 
因为最后的操作是count,所以Speedment会自动忽略sort和mapToInt因为它们对于count操作的结果没有任何影响。这意味着开发人员可以只专注于程序逻辑,不必操心语句是如何转换为SQL的。
 
4下载 
欢迎到Speedment官网www.speedment.org看看,上面有API文档和教程。Speedment托管在GitHub上面,大家可以在上面下载源代码或者提交反馈。
 
5小结 
代码也是遵守反摩尔定律的:我前些年写的100行数据库代码现在只需要一行Java 8代码,正好每两年长度减少一半。这就是进步啊!
 

开源大数据处理工具汇总,包括日志收集系统/集群管理/RPC等

唐半张 发表了文章 0 个评论 2425 次浏览 2015-10-11 11:04 来自相关话题

日志收集系统 一、Facebook Scribe   简介:Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以 ...查看全部
日志收集系统
一、Facebook Scribe

 
简介:Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。当中央存储系统的网络或者机器出现故障时,scribe会将日志转存到本地或者另一个位置,当中央存储系统恢复后,scribe会将转存的日志重新传输给中央存储系统。其通常与Hadoop结合使用,scribe用于向HDFS中push日志,而Hadoop通过MapReduce作业进行定期处理。
Scribe的系统架构

 
二、Cloudera Flume
 
简介:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。
当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。
Cloudera Flume构架

 
三、logstash
简介:logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
 

四、kibana
简介:Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面。
 
 
消息系统
一、StormMQ
简介:MQMessageQueue消息队列产品 StormMQ,是一种服务程序。
 
二、ZeroMQ
简介:这是个类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信,node可以是主机或者是进程。
引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”
 
三、RabbitMQ
简介:RabbitMQ是一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。本文简单介绍了如何使用 RabbitMQ,假定你已经配置好了rabbitmq服务器。

RabbitMQ是用Erlang,对于主要的编程语言都有驱动或者客户端。我们这里要用的是Java,所以先要获得Java客户端。
像RabbitMQ这样的消息代理可用来模拟不同的场景,例如点对点的消息分发或者订阅/推送。我们的程序足够简单,有两个基本的组件,一个生产者用于产生消息,还有一个消费者用来使用产生的消息。
 
四、Apache ActiveMQ
简介:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

特性:
⒈ 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
⒉ 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
⒊ 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
⒋ 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
⒌ 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
⒍ 支持通过JDBC和journal提供高速的消息持久化
⒎ 从设计上保证了高性能的集群,客户端-服务器,点对点
⒏ 支持Ajax
⒐ 支持与Axis的整合
⒑ 可以很容易得调用内嵌JMS provider,进行测试
 
五、Jafka
 
简介:Jafka 是一个开源的、高性能的、跨语言分布式消息系统,使用GitHub托管。Jafka 最早是由Apache孵化的Kafka(由LinkedIn捐助给Apache)克隆而来。由于是一个开放式的数据传输协议,因此除了Java开发语言受到支持,Python、Ruby、C、C++等其他语言也能够很好的得到支持。
特性:
1、消息持久化非常快,服务端存储消息的开销为O(1),并且基于文件系统,能够持久化TB级的消息而不损失性能。
2、吞吐量取决于网络带宽。
3、完全的分布式系统,broker、producer、consumer都原生自动支持分布式。自动实现复杂均衡。
4、内核非常小,整个系统(包括服务端和客户端)只有一个272KB的jar包,内部机制也不复杂,适合进行内嵌或者二次开发 。整个服务端加上依赖组件共3.5MB。
5、消息格式以及通信机制非常简单,适合进行跨语言开发。目前自带的Python3.x的客户端支持发送消息和接收消息。
 
六、Apache Kafka
 
简介:Apache Kafka是由Apache软件基金会开发的一个开源消息系统项目,由Scala写成。Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
Kafka是一个分布式的、分区的、多复本的日志提交服务。它通过一种独一无二的设计提供了一个消息系统的功能。
Kafka集群可以在一个指定的时间内保持所有发布上来的消息,不管这些消息有没有被消费。打个比方,如果这个时间设置为两天,那么在消息发布的两天以内,这条消息都是可以被消费的,但是在两天后,这条消息就会被系统丢弃以释放空间。Kafka的性能不会受数据量的大小影响,因此保持大量的数据不是一个问题。
 
 
分布式服务
一、ZooKeeper
 
简介:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
ZooKeeper是以Fast Paxos算法为基础的,paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader,只有leader才能提交propose,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。
架构:

 
 
RPC
(Remote Procedure Call Protocol)——远程过程调用协议
一、Apache Avro
简介:Apache Avro是Hadoop下的一个子项目。它本身既是一个序列化框架,同时也实现了RPC的功能。Avro官网描述Avro的特性和功能如下:
  • 丰富的数据结构类型;
  • 快速可压缩的二进制数据形式;
  • 存储持久数据的文件容器;
  • 提供远程过程调用RPC;
  • 简单的动态语言结合功能。
相比于Apache Thrift 和Google的Protocol Buffers,Apache Avro具有以下特点:
  • 支持动态模式。Avro不需要生成代码,这有利于搭建通用的数据处理系统,同时避免了代码入侵。
  • 数据无须加标签。读取数据前,Avro能够获取模式定义,这使得Avro在数据编码时只需要保留更少的类型信息,有利于减少序列化后的数据大小。
 二、Facebook Thrift贡献者:Facebook简介:Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基金会将Thrift作为一个开源项目,对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性。thrift可以支持多种程序语言,例如: C++, C#, Cocoa, Erlang, Haskell, Java, Ocami, Perl, PHP, Python, Ruby, Smalltalk. 在多种不同的语言之间通信thrift可以作为二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。Thrift适用于程序对程 序静态的数据交换,需要先确定好他的数据结构,他是完全静态化的,当数据结构发生变化时,必须重新编辑IDL文件,代码生成,再编译载入的流程,跟其他IDL工具相比较可以视为是Thrift的弱项,Thrift适用于搭建大型数据交换及存储的通用工具,对于大型系统中的内部数据传输相对于JSON和xml无论在性能、传输大小上有明显的优势。Thrift 主要由5个部分组成:· 类型系统以及 IDL 编译器:负责由用户给定的 IDL 文件生成相应语言的接口代码· TProtocol:实现 RPC 的协议层,可以选择多种不同的对象串行化方式,如 JSON, Binary。· TTransport:实现 RPC 的传输层,同样可以选择不同的传输层实现,如socket, 非阻塞的 socket, MemoryBuffer 等。· TProcessor:作为协议层和用户提供的服务实现之间的纽带,负责调用服务实现的接口。· TServer:聚合 TProtocol, TTransport 和 TProcessor 几个对象。上述的这5个部件都是在 Thrift 的源代码中通过为不同语言提供库来实现的,这些库的代码在 Thrift 源码目录的 lib 目录下面,在使用 Thrift 之前需要先熟悉与自己的语言对应的库提供的接口。Facebook Thrift构架:  集群管理一、Nagios简介:Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。 二、Ganglia简介:Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。 三、Apache Ambari简介:Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog等的集中管理。也是5个顶级hadoop管理工具之一。Ambari主要取得了以下成绩:
  • 通过一步一步的安装向导简化了集群供应。
  • 预先配置好关键的运维指标(metrics),可以直接查看Hadoop Core(HDFS和MapReduce)及相关项目(如HBase、Hive和HCatalog)是否健康。
  • 支持作业与任务执行的可视化与分析,能够更好地查看依赖和性能。
  • 通过一个完整的RESTful API把监控信息暴露出来,集成了现有的运维工具。
  • 用户界面非常直观,用户可以轻松有效地查看信息并控制集群。
Ambari使用Ganglia收集度量指标,用Nagios支持系统报警,当需要引起管理员的关注时(比如,节点停机或磁盘剩余空间不足等问题),系统将向其发送邮件。此外,Ambari能够安装安全的(基于Kerberos)Hadoop集群,以此实现了对Hadoop 安全的支持,提供了基于角色的用户认证、授权和审计功能,并为用户管理集成了LDAP和Active Directory。  基础设施一、LevelDB 简介:Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LMS算法。LevelDB 是单进程的服务,性能非常之高,在一台4核Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。Leveldb框架 二、SSTable简介:如果说Protocol Buffer是谷歌独立数据记录的通用语言 ,那么有序字符串表(SSTable,Sorted String Table)则是用于存储,处理和数据集交换的最流行​​的数据输出格式。正如它的名字本身,SSTable是有效存储大量键-值对的简单抽象,对高吞吐量顺序读/写进行了优化。SSTable是Bigtable中至关重要的一块,对于LevelDB来说也是如此。三、RecordIO 简介:我们大家都在用文件来存储数据。文件是存储在磁盘上的。如果在一些不稳定的介质上,文件很容损坏。即时文件某个位置出现一点小小的问题,整个文件就废了。下面我来介绍Google的一个做法,可以比较好的解决这个问题。那就是recordio文件格式。recoidio的存储单元是一个一个record。这个record可以根据业务的需要自行定义。但Google有一种建议的处理方式就是使用protobuf。reocordio底层的格式其实很简单。一个record由四部分组成:
  • MagicNumber (32 bits)
  • Uncompressed data payload size (64 bits)
  • Compressed data payload size (64 bits), or 0 if the data is not compressed
  • Payload, possibly compressed.
详细格式如下图所示:到这里,大家可能已经知道,recordio之所以能对付坏数据,其实就是在这个MagicNumber(校验值)。 简介:谷歌开源高效、跨平台的序列化库FlatBuffers。该库的构建是专门为游戏开发人员的性能需求提供支持,它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输,而不需要任何解析开销。FlatBuffers有如下一些关键特性—
  • 访问序列化数据不需要打包/拆包
  • 节省内存而且访问速度快——缓存只占用访问数据所需要的内存;不需要任何额外的内存。
  • 灵活性——通过可选字段向前向后兼容
  • 代码规模小
  • 强类型——错误在编译时捕获,而不是在运行时
  • 便利性——生成的C++头文件代码简洁。如果需要,有一项可选功能可以用来在运行时高效解析Schema和JSON-like格式的文本。
  • 跨平台——使用C++编写,不依赖STL之外的库,因此可以用于任何有C++编辑器的平台。当前,该项目包含构建方法和在Android、Linux、Windows和OSX等操作系统上使用该库的示例。
与Protocol Buffers或JSON Parsing这样的可选方案相比,FlatBuffers的优势在于开销更小,这主要是由于它没有解析过程。 五、Protocol Buffers贡献者:Google简介:Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python等三种编程语言,但可以找到大量的几乎涵盖所有语言的第三方拓展包。通过它,你可以定义你的数据的结构,并生成基于各种语言的代码。这些你定义的数据流可以轻松地在传递并不破坏你已有的程序。并且你也可以更新这些数据而现有的程序也不会受到任何的影响。Protocol Buffers经常被简称为protobuf。 六、Consistent Hashing(哈希算法)简介:一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能够尽量避免不一致的情况发生,也就是尽量降低分散性。4、负载(Load):负载问题实际上是从另一个角度看待分散性问题。既然不同的终端可能将相同的内容映射到不同的缓冲区中,那么对于一个特定的缓冲区而言,也可能被不同的用户映射为不同 的内容。与分散性一样,这种情况也是应当避免的,因此好的哈希算法应能够尽量降低缓冲的负荷。在分布式集群中,对机器的添加删除,或者机器故障后自动脱离集群这些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有机器添加或者删除后,很多原有的数据就无法找到了,这样严重的违反了单调性原则。七、Netty 简介:Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。“快速”和“简单”并不意味着会让你的最终应用产生维护性或性能上的问题。Netty 是一个吸收了多种协议的实现经验,这些协议包括FTP,SMTP,HTTP,各种二进制,文本协议,并经过相当精心设计的项目,最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。 八、BloomFilter简介:Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filter 是牺牲了正确率和时间以节省空间。Bloom filter 优点就是它的插入和查询时间都是常数,另外它查询元素却不保存元素本身,具有良好的安全性。  搜索引擎一、Nutch简介:Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益.这显然 不利于广大Internet用户.Nutch为我们提供了这样一个不同的选择. 相对于那些商用的搜索引擎, Nutch作为开放源代码 搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的 费用, 而不是根据它们本身的价值进行排序. 与它们不同, Nucth没有什么需要隐瞒, 也没有 动机去扭曲搜索的结果. Nutch将尽自己最大的努力为用户提供最好的搜索结果.Nutch目前最新的版本为version v2.2.1。 二、Lucene 简介:Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 三、SolrCloud简介:SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布式搜索方案。SolrCloud是Solr的基于Zookeeper一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式。原理图SolrCloud有几个特色功能:集中式的配置信息使用ZK进行集中配置。启动时可以指定把Solr的相关配置文件上传Zookeeper,多机器共用。这些ZK中的配置不会再拿到本地缓存,Solr直接读取ZK中的配置信息。配置文件的变动,所有机器都可以感知到。另外,Solr的一些任务也是通过ZK作为媒介发布的。目的是为了容错。接收到任务,但在执行任务时崩溃的机器,在重启后,或者集群选出候选者时,可以再次执行这个未完成的任务。自动容错SolrCloud对索引分片,并对每个分片创建多个Replication。每个Replication都可以对外提供服务。一个Replication挂掉不会影响索引服务。更强大的是,它还能自动的在其它机器上帮你把失败机器上的索引Replication重建并投入使用。近实时搜索立即推送式的replication(也支持慢推送)。可以在秒内检索到新加入索引。查询时自动负载均衡SolrCloud索引的多个Replication可以分布在多台机器上,均衡查询压力。如果查询压力大,可以通过扩展机器,增加Replication来减缓。自动分发的索引和索引分片发送文档到任何节点,它都会转发到正确节点。事务日志事务日志确保更新无丢失,即使文档没有索引到磁盘。四、Solr简介:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。 五、ElasticSearch简介:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二最流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 六、Sphinx简介:Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。Sphinx单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。 七、SenseiDB 简介:SenseiDB是一个NoSQL数据库,它专注于高更新率以及复杂半结构化搜索查询。熟悉Lucene和Solor的用户会发现,SenseiDB背后有许多似曾相识的概念。SenseiDB部署在多节点集群中,其中每个节点可以包括N块数据片。Apache Zookeeper用于管理节点,它能够保持现有配置,并可以将任意改动(如拓扑修改)传输到整个节点群中。SenseiDB集群还需要一种模式用于定义将要使用的数据模型。从SenseiDB集群中获取数据的唯一方法是通过Gateways(它 没有“INSERT”方法)。每个集群都连接到一个单一gateway。你需要了解很重要的一点是,由于SenseiDB本身没法处理原子性 (Atomicity)和隔离性(Isolation),因此只能通过外部在gateway层进行限制。另外,gateway必须确保数据流按照预期的方 式运作。内置的gateway有以下几种形式:
  • 来自文件
  • 来自JMS队列
  • 通过JDBC
  • 来自Apache Kafka
  数据挖掘一、Mahout简介:Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头,目前只有一个公共发行版。Mahout 包含许多实现,包括集群、分类、CP 和进化程序。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。虽然在开源领域中相对较为年轻,但 Mahout 已经提供了大量功能,特别是在集群和 CF 方面。Mahout 的主要特性包括:[list=1]
  • Taste CF。Taste 是 Sean Owen 在 SourceForge 上发起的一个针对 CF 的开源项目,并在 2008 年被赠予 Mahout。
  • 一些支持 Map-Reduce 的集群实现包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift。
  • Distributed Naive Bayes 和 Complementary Naive Bayes 分类实现。
  • 针对进化编程的分布式适用性功能。
  • Matrix 和矢量库。
  • 上述算法的示例。
  •  IaasIaaS(Infrastructure as a Service),即基础设施即服务。一、OpenStack简介:OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。6个核心项目:Nova(计算,Compute),Swift(对象存储,Object),Glance(镜像,Image),Keystone(身份,Identity),Horizon(自助门户,Dashboard),Quantum & Melange(网络&地址管理),另外还有若干社区项目,如Rackspace(负载均衡)、Rackspace(关系型数据库)。  二、Docker贡献者:dotCloud简介:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。 三、Kubernetes 简介:Kubernetes是Google开源的容器集群管理系统。它构建Ddocker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。Kubernetes从另一个角度对资源进行抽象,它让开发人员和管理人员共同着眼于服务的行为和性能的提升,而不是仅仅关注对单一的组件或者是基础资源。那么Kubernetes集群到底提供了哪些单一容器所没有功能?它主要关注的是对服务级别的控制而并非仅仅是对容器级别的控制,Kubernetes提供了一种“机智”的管理方式,它将服务看成一个整体。在Kubernete的解决方案中,一个服务甚至可以自我扩展,自我诊断,并且容易升级。例如,在Google中,我们使用机器学习技术来保证每个运行的服务的当前状态都是最高效的。 四、Imctfy 简介:Google开源了自己所用Linux容器系统的开源版本lmctfy,读音为lem-kut-fee。包括一个C++库(使用了C++11,文档可以参考头文件)和命令行界面。目前的版本是0.1,只提供了CPU与内存隔离。项目还在密集开发中。mctfy本身是针对某些特定使用场景设计和实现的,目前拥有一台机器上所有容器时运行情况最好,不推荐与LXC和其他容器系统一起使用(虽然也可行)。已在Ubuntu 12.04+和Ubuntu 3.3与3.8内核上测试。  监控管理一、Dapper 简介:Dapper是一个轻量的ORM(对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)。并不单纯的是一个DBHelper.因为在Dapper中数据其实就是一个对象。Dapper扩展与IDbConnection上,所以事实上它的倾入性很低。我用了StructureMap。如果不喜欢可以自己更换,或者自己实现下。代码就一个SqlMapper.cs文件,主要是IDbConnection的扩展方法,编译后就40K的一个很小的dll。特性:[list=1]
  • Dapper很快。Dapper的速度接近与IDataReader。
  • Dapper支持主流数据库 Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库
  • 支持多表并联的对象。支持一对多 多对多的关系,并且没侵入性。
  • 原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象
  • Dapper语法十分简单。并且无须迁就数据库的设计
  •  二、Zipkin 简介:Zipkin (分布式跟踪系统)是 Twitter 的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。该系统让开发者可通过一个 Web 前端轻松的收集和分析数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。本节讲到这里就算完了,有不全面的地方希望大家一起探讨. 数据挖掘一、Mahout简介:Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头,目前只有一个公共发行版。Mahout 包含许多实现,包括集群、分类、CP 和进化程序。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。虽然在开源领域中相对较为年轻,但 Mahout 已经提供了大量功能,特别是在集群和 CF 方面。Mahout 的主要特性包括:[list=1]
  • Taste CF。Taste 是 Sean Owen 在 SourceForge 上发起的一个针对 CF 的开源项目,并在 2008 年被赠予 Mahout。
  • 一些支持 Map-Reduce 的集群实现包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift。
  • Distributed Naive Bayes 和 Complementary Naive Bayes 分类实现。
  • 针对进化编程的分布式适用性功能。
  • Matrix 和矢量库。
  • 上述算法的示例。
  •  IaasIaaS(Infrastructure as a Service),即基础设施即服务。一、OpenStack简介:OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。6个核心项目:Nova(计算,Compute),Swift(对象存储,Object),Glance(镜像,Image),Keystone(身份,Identity),Horizon(自助门户,Dashboard),Quantum & Melange(网络&地址管理),另外还有若干社区项目,如Rackspace(负载均衡)、Rackspace(关系型数据库)。  二、Docker 简介:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。 三、Kubernetes 简介:Kubernetes是Google开源的容器集群管理系统。它构建Ddocker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。Kubernetes从另一个角度对资源进行抽象,它让开发人员和管理人员共同着眼于服务的行为和性能的提升,而不是仅仅关注对单一的组件或者是基础资源。那么Kubernetes集群到底提供了哪些单一容器所没有功能?它主要关注的是对服务级别的控制而并非仅仅是对容器级别的控制,Kubernetes提供了一种“机智”的管理方式,它将服务看成一个整体。在Kubernete的解决方案中,一个服务甚至可以自我扩展,自我诊断,并且容易升级。例如,在Google中,我们使用机器学习技术来保证每个运行的服务的当前状态都是最高效的。 四、Imctfy 简介:Google开源了自己所用Linux容器系统的开源版本lmctfy,读音为lem-kut-fee。包括一个C++库(使用了C++11,文档可以参考头文件)和命令行界面。目前的版本是0.1,只提供了CPU与内存隔离。项目还在密集开发中。mctfy本身是针对某些特定使用场景设计和实现的,目前拥有一台机器上所有容器时运行情况最好,不推荐与LXC和其他容器系统一起使用(虽然也可行)。已在Ubuntu 12.04+和Ubuntu 3.3与3.8内核上测试。  监控管理一、Dapper 简介:Dapper是一个轻量的ORM(对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)。并不单纯的是一个DBHelper.因为在Dapper中数据其实就是一个对象。Dapper扩展与IDbConnection上,所以事实上它的倾入性很低。我用了StructureMap。如果不喜欢可以自己更换,或者自己实现下。代码就一个SqlMapper.cs文件,主要是IDbConnection的扩展方法,编译后就40K的一个很小的dll。特性:[list=1]
  • Dapper很快。Dapper的速度接近与IDataReader。
  • Dapper支持主流数据库 Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库
  • 支持多表并联的对象。支持一对多 多对多的关系,并且没侵入性。
  • 原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象
  • Dapper语法十分简单。并且无须迁就数据库的设计

  •  
    二、Zipkin
     
    简介:Zipkin (分布式跟踪系统)是 Twitter 的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。该系统让开发者可通过一个 Web 前端轻松的收集和分析数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。

     

    一个常见的大数据术语表(中英对照简版)

    唐半张 发表了文章 0 个评论 1856 次浏览 2015-10-11 09:27 来自相关话题

    大数据的出现带来了许多新的术语,但这些术语往往比较难以理解。因此,我们通过本文给出一个常用的大数据术语表,抛砖引玉,供大家深入了解。其中部分定义参考了相应的博客文章。当然,这份术语表并没有100%包含所有的术语,如果你认为有任 ...查看全部
    大数据的出现带来了许多新的术语,但这些术语往往比较难以理解。因此,我们通过本文给出一个常用的大数据术语表,抛砖引玉,供大家深入了解。其中部分定义参考了相应的博客文章。当然,这份术语表并没有100%包含所有的术语,如果你认为有任何遗漏之处,请告之我们。
    聚合(Aggregation) – 搜索、合并、显示数据的过程
    算法(Algorithms) – 可以完成某种数据分析的数学公式
    分析法(Analytics) – 用于发现数据的内在涵义
    异常检测(Anomaly detection) – 在数据集中搜索与预期模式或行为不匹配的数据项。除了“Anomalies”,用来表示异常的词有以下几种:outliers, exceptions, surprises, contaminants.他们通常可提供关键的可执行信息
    匿名化(Anonymization) – 使数据匿名,即移除所有与个人隐私相关的数据
    应用(Application) – 实现某种特定功能的计算机软件
    人工智能(Artificial Intelligence) – 研发智能机器和智能软件,这些智能设备能够感知周遭的环境,并根据要求作出相应的反应,甚至能自我学习
    B
    行为分析法(Behavioural Analytics) – 这种分析法是根据用户的行为如“怎么做”,“为什么这么做”,以及“做了什么”来得出结论,而不是仅仅针对人物和时间的一门分析学科,它着眼于数据中的人性化模式
    大数据科学家(Big Data Scientist) – 能够设计大数据算法使得大数据变得有用的人
    大数据创业公司(Big data startup) – 指研发最新大数据技术的新兴公司
    生物测定术(Biometrics) – 根据个人的特征进行身份识别
    B字节 (BB: Brontobytes) – 约等于1000 YB(Yottabytes),相当于未来数字化宇宙的大小。1 B字节包含了27个0!
    商业智能(Business Intelligence) – 是一系列理论、方法学和过程,使得数据更容易被理解
    C
    分类分析(Classification analysis) – 从数据中获得重要的相关性信息的系统化过程; 这类数据也被称为元数据(meta data),是描述数据的数据
    云计算(Cloud computing) – 构建在网络上的分布式计算系统,数据是存储于机房外的(即云端)
    聚类分析(Clustering analysis) – 它是将相似的对象聚合在一起,每类相似的对象组合成一个聚类(也叫作簇)的过程。这种分析方法的目的在于分析数据间的差异和相似性
    冷数据存储(Cold data storage) – 在低功耗服务器上存储那些几乎不被使用的旧数据。但这些数据检索起来将会很耗时
    对比分析(Comparative analysis) – 在非常大的数据集中进行模式匹配时,进行一步步的对比和计算过程得到分析结果
    复杂结构的数据(Complex structured data) – 由两个或多个复杂而相互关联部分组成的数据,这类数据不能简单地由结构化查询语言或工具(SQL)解析
    计算机产生的数据(Computer generated data) – 如日志文件这类由计算机生成的数据
    并发(Concurrency) – 同时执行多个任务或运行多个进程
    相关性分析(Correlation analysis) – 是一种数据分析方法,用于分析变量之间是否存在正相关,或者负相关
    客户关系管理(CRM: Customer Relationship Management) – 用于管理销售、业务过程的一种技术,大数据将影响公司的客户关系管理的策略
    D
    仪表板(Dashboard) – 使用算法分析数据,并将结果用图表方式显示于仪表板中
    数据聚合工具(Data aggregation tools) – 将分散于众多数据源的数据转化成一个全新数据源的过程
    数据分析师(Data analyst) – 从事数据分析、建模、清理、处理的专业人员
    数据库(Database) – 一个以某种特定的技术来存储数据集合的仓库
    数据库即服务(Database-as-a-Service) – 部署在云端的数据库,即用即付,例如亚马逊云服务(AWS: Amazon Web Services)
    数据库管理系统(DBMS: Database Management System) – 收集、存储数据,并提供数据的访问
    数据中心(Data centre) – 一个实体地点,放置了用来存储数据的服务器
    数据清洗(Data cleansing) – 对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性
    数据管理员(Data custodian) – 负责维护数据存储所需技术环境的专业技术人员
    数据道德准则(Data ethical guidelines) – 这些准则有助于组织机构使其数据透明化,保证数据的简洁、安全及隐私
    数据订阅(Data feed) – 一种数据流,例如Twitter订阅和RSS
    数据集市(Data marketplace) – 进行数据集买卖的在线交易场所
    数据挖掘(Data mining) – 从数据集中发掘特定模式或信息的过程
    数据建模(Data modelling) – 使用数据建模技术来分析数据对象,以此洞悉数据的内在涵义
    数据集(Data set) – 大量数据的集合
    数据虚拟化(Data virtualization) – 数据整合的过程,以此获得更多的数据信息,这个过程通常会引入其他技术,例如数据库,应用程序,文件系统,网页技术,大数据技术等等
    去身份识别(De-identification) – 也称为匿名化(anonymization),确保个人不会通过数据被识别
    判别分析(Discriminant analysis) – 将数据分类;按不同的分类方式,可将数据分配到不同的群组,类别或者目录。是一种统计分析法,可以对数据中某些群组或集群的已知信息进行分析,并从中获取分类规则。
    分布式文件系统(Distributed File System) – 提供简化的,高可用的方式来存储、分析、处理数据的系统
    文件存贮数据库(Document Store Databases) – 又称为文档数据库(document-oriented database), 为存储、管理、恢复文档数据而专门设计的数据库,这类文档数据也称为半结构化数据
    E
    探索性分析(Exploratory analysis) – 在没有标准的流程或方法的情况下从数据中发掘模式。是一种发掘数据和数据集主要特性的一种方法
    E字节(EB: Exabytes) – 约等于1000 PB(petabytes), 约等于1百万 GB。如今全球每天所制造的新信息量大约为1 EB
    提取-转换-加载(ETL: Extract, Transform and Load) – 是一种用于数据库或者数据仓库的处理过程。即从各种不同的数据源提取(E)数据,并转换(T)成能满足业务需要的数据,最后将其加载(L)到数据库
    F
    故障切换(Failover) – 当系统中某个服务器发生故障时,能自动地将运行任务切换到另一个可用服务器或节点上
    容错设计(Fault-tolerant design) – 一个支持容错设计的系统应该能够做到当某一部分出现故障也能继续运行
    G
    游戏化(Gamification) – 在其他非游戏领域中运用游戏的思维和机制,这种方法可以以一种十分友好的方式进行数据的创建和侦测,非常有效。
    图形数据库(Graph Databases) – 运用图形结构(例如,一组有限的有序对,或者某种实体)来存储数据,这种图形存储结构包括边缘、属性和节点。它提供了相邻节点间的自由索引功能,也就是说,数据库中每个元素间都与其他相邻元素直接关联。
    网格计算(Grid computing) – 将许多分布在不同地点的计算机连接在一起,用以处理某个特定问题,通常是通过云将计算机相连在一起。
    H
    Hadoop – 一个开源的分布式系统基础框架,可用于开发分布式程序,进行大数据的运算与存储。
    Hadoop数据库(HBase) – 一个开源的、非关系型、分布式数据库,与Hadoop框架共同使用
    HDFS – Hadoop分布式文件系统(Hadoop Distributed File System);是一个被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统
    高性能计算(HPC: High-Performance-Computing) – 使用超级计算机来解决极其复杂的计算问题
    I
    内存数据库(IMDB: In-memory) – 一种数据库管理系统,与普通数据库管理系统不同之处在于,它用主存来存储数据,而非硬盘。其特点在于能高速地进行数据的处理和存取。
    物联网(Internet of Things) – 在普通的设备中装上传感器,使这些设备能够在任何时间任何地点与网络相连。
    J
    法律上的数据一致性(Juridical data compliance) – 当你使用的云计算解决方案,将你的数据存储于不同的国家或不同的大陆时,就会与这个概念扯上关系了。你需要留意这些存储在不同国家的数据是否符合当地的法律。
    K
    键值数据库(KeyValue Databases) – 数据的存储方式是使用一个特定的键,指向一个特定的数据记录,这种方式使得数据的查找更加方便快捷。键值数据库中所存的数据通常为编程语言中基本数据类型的数据。
    L
    延迟(Latency) – 表示系统时间的延迟
    遗留系统(Legacy system) – 是一种旧的应用程序,或是旧的技术,或是旧的计算系统,现在已经不再支持了。
    负载均衡(Load balancing) – 将工作量分配到多台电脑或服务器上,以获得最优结果和最大的系统利用率。
    位置信息(Location data) – GPS信息,即地理位置信息。
    日志文件(Log file) – 由计算机系统自动生成的文件,记录系统的运行过程。
    M
    M2M数据(Machine2Machine data) – 两台或多台机器间交流与传输的内容
    机器数据(Machine data) – 由传感器或算法在机器上产生的数据
    机器学习(Machine learning) – 人工智能的一部分,指的是机器能够从它们所完成的任务中进行自我学习,通过长期的累积实现自我改进。
    MapReduce – 是处理大规模数据的一种软件框架(Map: 映射,Reduce: 归纳)。
    大规模并行处理(MPP: Massively Parallel Processing) – 同时使用多个处理器(或多台计算机)处理同一个计算任务。
    元数据(Metadata) – 被称为描述数据的数据,即描述数据数据属性(数据是什么)的信息。
    MongoDB – 一种开源的非关系型数据库(NoSQL database)
    多维数据库(Multi-Dimensional Databases) – 用于优化数据联机分析处理(OLAP)程序,优化数据仓库的一种数据库。
    多值数据库(MultiValue Databases) – 是一种非关系型数据库(NoSQL), 一种特殊的多维数据库:能处理3个维度的数据。主要针对非常长的字符串,能够完美地处理HTML和XML中的字串。
    N
    自然语言处理(Natural Language Processing) – 是计算机科学的一个分支领域,它研究如何实现计算机与人类语言之间的交互。
    网络分析(Network analysis) – 分析网络或图论中节点间的关系,即分析网络中节点间的连接和强度关系。
    NewSQL – 一个优雅的、定义良好的数据库系统,比SQL更易学习和使用,比NoSQL更晚提出的新型数据库
    NoSQL – 顾名思义,就是“不使用SQL”的数据库。这类数据库泛指传统关系型数据库以外的其他类型的数据库。这类数据库有更强的一致性,能处理超大规模和高并发的数据。
    O
    对象数据库(Object Databases) – (也称为面象对象数据库)以对象的形式存储数据,用于面向对象编程。它不同于关系型数据库和图形数据库,大部分对象数据库都提供一种查询语言,允许使用声明式编程(declarative programming)访问对象.
    基于对象图像分析(Object-based Image Analysis) – 数字图像分析方法是对每一个像素的数据进行分析,而基于对象的图像分析方法则只分析相关像素的数据,这些相关像素被称为对象或图像对象。
    操作型数据库(Operational Databases) – 这类数据库可以完成一个组织机构的常规操作,对商业运营非常重要,一般使用在线事务处理,允许用户访问 、收集、检索公司内部的具体信息。
    优化分析(Optimization analysis) – 在产品设计周期依靠算法来实现的优化过程,在这一过程中,公司可以设计各种各样的产品并测试这些产品是否满足预设值。
    本体论(Ontology) – 表示知识本体,用于定义一个领域中的概念集及概念之间的关系的一种哲学思想。(译者注: 数据被提高到哲学的高度,被赋予了世界本体的意义,成为一个独立的客观数据世界)
    异常值检测(Outlier detection) – 异常值是指严重偏离一个数据集或一个数据组合总平均值的对象,该对象与数据集中的其他它相去甚远,因此,异常值的出现意味着系统发生问题,需要对此另加分析。
    P
    模式识别(Pattern Recognition) – 通过算法来识别数据中的模式,并对同一数据源中的新数据作出预测
    P字节(PB: Petabytes) – 约等于1000 TB(terabytes), 约等于1百万 GB (gigabytes)。欧洲核子研究中心(CERN)大型强子对撞机每秒产生的粒子个数就约为1 PB
    平台即服务(PaaS: Platform-as-a-Service) – 为云计算解决方案提供所有必需的基础平台的一种服务
    预测分析(Predictive analysis) – 大数据分析方法中最有价值的一种分析方法,这种方法有助于预测个人未来(近期)的行为,例如某人很可能会买某些商品,可能会访问某些网站,做某些事情或者产生某种行为。通过使用各种不同的数据集,例如历史数据,事务数据,社交数据,或者客户的个人信息数据,来识别风险和机遇
    隐私(Privacy) – 把具有可识别出个人信息的数据与其他数据分离开,以确保用户隐私。
    公共数据(Public data) – 由公共基金创建的公共信息或公共数据集。
    Q
    数字化自我(Quantified Self) – 使用应用程序跟踪用户一天的一举一动,从而更好地理解其相关的行为
    查询(Query) – 查找某个问题答案的相关信息
    R
    再识别(Re-identification) – 将多个数据集合并在一起,从匿名化的数据中识别出个人信息
    回归分析(Regression analysis) – 确定两个变量间的依赖关系。这种方法假设两个变量之间存在单向的因果关系(译者注:自变量,因变量,二者不可互换)
    RFID – 射频识别; 这种识别技术使用一种无线非接触式射频电磁场传感器来传输数据
    实时数据(Real-time data) – 指在几毫秒内被创建、处理、存储、分析并显示的数据
    推荐引擎(Recommendation engine) – 推荐引擎算法根据用户之前的购买行为或其他购买行为向用户推荐某种产品
    路径分析(Routing analysis) – 针对某种运输方法通过使用多种不同的变量分析从而找到一条最优路径,以达到降低燃料费用,提高效率的目的
    S
    半结构化数据(Semi-structured data) – 半结构化数据并不具有结构化数据严格的存储结构,但它可以使用标签或其他形式的标记方式以保证数据的层次结构
    情感分析(Sentiment Analysis) – 通过算法分析出人们是如何看待某些话题
    信号分析(Signal analysis) – 指通过度量随时间或空间变化的物理量来分析产品的性能。特别是使用传感器数据。
    相似性搜索(Similarity searches) – 在数据库中查询最相似的对象,这里所说的数据对象可以是任意类型的数据
    仿真分析(Simulation analysis) – 仿真是指模拟真实环境中进程或系统的操作。仿真分析可以在仿真时考虑多种不同的变量,确保产品性能达到最优
    智能网格(Smart grid) – 是指在能源网中使用传感器实时监控其运行状态,有助于提高效率
    软件即服务(SaaS: Software-as-a-Service) – 基于Web的通过浏览器使用的一种应用软件
    空间分析(Spatial analysis) – 空间分析法分析地理信息或拓扑信息这类空间数据,从中得出分布在地理空间中的数据的模式和规律
    SQL – 在关系型数据库中,用于检索数据的一种编程语言
    结构化数据(Structured data) -可以组织成行列结构,可识别的数据。这类数据通常是一条记录,或者一个文件,或者是被正确标记过的数据中的某一个字段,并且可以被精确地定位到。
    T
    T字节(TB: Terabytes) – 约等于1000 GB(gigabytes)。1 TB容量可以存储约300小时的高清视频。
    时序分析(Time series analysis) – 分析在重复测量时间里获得的定义良好的数据。分析的数据必须是良好定义的,并且要取自相同时间间隔的连续时间点。
    拓扑数据分析(Topological Data Analysis) – 拓扑数据分析主要关注三点:复合数据模型、集群的识别、以及数据的统计学意义。
    交易数据(Transactional data) – 随时间变化的动态数据
    透明性(Transparency) – 消费者想要知道他们的数据有什么作用、被作何处理,而组织机构则把这些信息都透明化了。
    U
    非结构化数据(Un-structured data) – 非结构化数据一般被认为是大量纯文本数据,其中还可能包含日期,数字和实例。
    V
    价值(Value) – (译者注:大数据4V特点之一) 所有可用的数据,能为组织机构、社会、消费者创造出巨大的价值。这意味着各大企业及整个产业都将从大数据中获益。
    可变性(Variability) – 也就是说,数据的含义总是在(快速)变化的。例如,一个词在相同的推文中可以有完全不同的意思。
    多样(Variety) – (译者注:大数据4V特点之一) 数据总是以各种不同的形式呈现,如结构化数据,半结构化数据,非结构化数据,甚至还有复杂结构化数据
    高速(Velocity) – (译者注:大数据4V特点之一) 在大数据时代,数据的创建、存储、分析、虚拟化都要求被高速处理。
    真实性(Veracity) – 组织机构需要确保数据的真实性,才能保证数据分析的正确性。因此,真实性(Veracity)是指数据的正确性。
    可视化(Visualization) – 只有正确的可视化,原始数据才可被投入使用。这里的“可视化”并非普通的图型或饼图,可视化指是的复杂的图表,图表中包含大量的数据信息,但可以被很容易地理解和阅读。
    大量(Volume) – (译者注:大数据4V特点之一) 指数据量,范围从Megabytes至Brontobytes
    W
    天气数据(Weather data) – 是一种重要的开放公共数据来源,如果与其他数据来源合成在一起,可以为相关组织机构提供深入分析的依据
    X
    XML数据库(XML Databases) – XML数据库是一种以XML格式存储数据的数据库。XML数据库通常与面向文档型数据库相关联,开发人员可以对XML数据库的数据进行查询,导出以及按指定的格式序列化
    Y
    Y字节 (Yottabytes) – 约等于1000 ZB (Zettabytes), 约等于250万亿张DVD的数据容量。现今,整个数字化宇宙的数据量为1 YB, 并且将每18年翻一番。
    Z
    Z字节 (ZB: Zettabytes) – 约等于1000 EB (Exabytes), 约等于1百万 TB。据预测,到2016年全球范围内每天网络上通过的信息大约能达到1 ZB。
    附:存储容量单位换算表:
    1 Bit(比特) = Binary Digit
    8 Bits = 1 Byte(字节)
    1,000 Bytes = 1 Kilobyte
    1,000 Kilobytes = 1 Megabyte
    1,000 Megabytes = 1 Gigabyte
    1,000 Gigabytes = 1 Terabyte
    1,000 Terabytes = 1 Petabyte
    1,000 Petabytes = 1 Exabyte
    1,000 Exabytes = 1 Zettabyte
    1,000 Zettabytes = 1 Yottabyte
    1,000 Yottabytes = 1 Brontobyte
    1,000 Brontobytes = 1 Geopbyte

    GOOGLE分布式数据库技术演进研究 --从Bigtable、Dremel到Spanner

    唐半张 发表了文章 0 个评论 1612 次浏览 2015-10-10 09:57 来自相关话题

    GOOGLE分布式数据库技术演进研究           1 引言          在传统RDBM系统中,对于事务处理必须保证为一个完整的逻辑处理过程,具备ACID四个特性,A Atonomy事务处理的原子性, ...查看全部
    GOOGLE分布式数据库技术演进研究 
            

    1 引言 
      
         在传统RDBM系统中,对于事务处理必须保证为一个完整的逻辑处理过程,具备ACID四个特性,A Atonomy事务处理的原子性,要么成功,要么失败 ,C Consistency一致性,数据库必须保持原有约束的关系,数据之间必须符合数据完整性,I Isolation事务处理必须要彼此隔离,由RDBM保证能够并发处理事务,而不需要用户显示的干预,D Durability数据能够被持久化下来,不会出现事务涉及数据丢失的情况。此4个特性是RDBM系统的基础要素和必须遵循的原则。 
      
         事物总是发展的,人类社会信息总量在不断增大,对于RDBM系统管理的数据容量已经从GB级别演进到TB级别,又从TB级别演进到PB级别,数据量不断增大,原有的RDBM已经力不从心。如何解决该问题? 
      
         软件设计很多思想都来自于建筑领域,先回到建筑领域,房屋建造有2要素,建筑高度、基础构造,建筑高度决定基础构造,而基础构造又会影响到建筑高度,建设一栋三层小房,专混结构就可以了,建设十一层房子,就需要上框架结构,摩天大楼,需要采用钢和框架的混合结构方式来支撑。软件设计也有相同的道理,也存在2个要素,一个容量要素,软件能够管理多少数据规模,一个是软件构造要素,软件运行的物理硬件、操作系统、采用何种架构来组织软件各功能模块。二者对应关系,“建筑高度”对应于“容量”,“基础构造”对应于“软件构造”,但是,二者有所不同,由于建筑物需要考虑成本、实用性、安全性和各种限制,建筑高度一定是有限的,总有一个极限,而软件则有所不同,一个大容量系统数据量已经从GB级增加到了TB级,从TB级到PB级,跃升了6个数量级,软件容量呈现指数级的增加,使得软件设计面临比建筑领域更大的挑战。 
      
         如何解决数据容量持续增加带来的挑战,第一 提升系统的计算能力,可以并行对应数据进行分区域或者分块计算,然后对应计算结果进行汇集处理,第二 提升数据的读取速度,单存储节点的读取速度必定存在限制,需要指出多存储节点的DB系统,分布式数据库DDBS系统诞生了,分布式数据库系统可以支持多个存储节点,从GOOGLE的BIGTBALE数据库原理相对应的HBASE数据库,就可以支持多个存储节点,存储节点的数量可以根据要求进行扩展,无理论上限。但是分布式数据库采用对存储节点构造后,带来了一个新的问题,这个问题就是CAP理论的魔咒,CAP为英文Consistent、Availablity、Partition Tolerance的缩写,一致性,可用性、分区容忍性,通常认为CAP理论是只能满足二个要求,不可兼得(这种限制,其实已经被GOOGLE的SPanner系统打破)。常见的DDBS系统可以保证AP,但是无法保证C,一致性,比如HBASE数据库,就无法保证多个存储区域的外部事务的一致性,如果数据跨了多个存储节点,数据可能存在冲突的可能,不一致的可能,无法做到数据表外的事务支持。ACID特性是一个数据库完美解决的要求,但DDBS要满足ACID特性中的原子性和各存储节点数据的外部一致性存在很大的困难,如果对二种不同的特征描述进行关联,AC---Consistent事务的原子性和一致性对应于DDBS一致性属性要求,ID---Availablity,事务的隔离性和持久化对应于DDBS可用性属性要求,而DDBS的Partition Tolerance会带来满足AC或者ID属性的困难,因此很多DDBS会进行特性取舍。 
      
         因此,如果让DDBS系统,使之完全满足ACID的特性,必须要解决数据Partition后带来的困难,数据分成多个存储节点,如何在满足事务隔离和持久化特性的基础上,保证这些不同存储节点上的数据一致性可用性,让DDBS呈现出完全的ACID特性,打破CAP的魔咒,最常用的方式是不同数据节点的同步和全局锁控制,如果采用这种控制机制,必然会带来系统网络同步开销增加,系统的Availability能力下降,而且会出现全局锁瓶颈点,影响到系统的扩展性,出现扩展后的瓶颈点,因此这条解决方案很难走通。那我们是否能够从不一致和不确定基础上,构造出一个可靠和确定的DDBS系统,GOOGLE的SPanner数据库设计思想为解决该问题带来的新的希望,以一种全新的视角和思路来解决该问题,在可以期待的将来,开源社区也能够出现与SPanner方式对应的产品出现,使得DDBS系统应用范围更加宽广。 
      
         综上所述,从CAP特性理论看,面对传统的权威理论,技术上要敢于去挑战,勇于分析,可以另辟蹊径解决技术问题,解决这些问题最大困难还是改善软件开发人员的认识,一旦认识成为定势,势必陷入到死胡同中,同时必须具备深厚的技术功底和高超编程技巧,从开源社区现在还缺乏类似于Spanner技术看,充分说明了这个技术要从思想走到实现,存在非常多的技术设计难点,要搞定这些设计难点绝无易事,但值得庆幸的,已经有人做到了,而且还在不断的完善它。 
      
         GOOGLE的分布式数据库系统从BIGTABLE的正式推出后,先后对外发布了Bigtable、Dremel、Spanner等不同的分布式数据库产品,有的是引入新的设计实现,有的是针对原有的技术进行改进和优化,用于满足GOOGLE不同的应用场景,支持日益增加的数据量管理要求。 
      
         GOOGLE分布式数据库技术,从个人理解看,可以分为三个阶段,第一阶段以Bigtable产品为代表,实现了数据的分布式存储、行数据的事务性管理和较好的扩展性,从存储WEB页面而生,创造性提出了KEY-VALUE这种MAP数据结构,并广泛应用到GOOGLE的各种应用中,与GOOGLE的MapReduce GFS技术搭配,构成了GOOGLE分布式云计算的三架马车,对应开源社区推出HBASE产品,也在近年得到了广泛应用。 
      
         第二个阶段以Dremel产品为代表,Dremel产品采用了与Bigtable不同的数据结构,立足实时对于海量数据进行分析,据说在秒级可以完成PB级别的数据分析和处理,可以做是分布式数据库实时处理的杰作,其实时处理能力达到令人惊艳的速度。 
      
         第三阶段以Spanner数据库技术为代表,Spanner数据库在可以做到多数据表事务一致性管理,利用原子时钟(TrueTime)和Paxos协议解决了分布式数据库多表事务一致性管理的难题,打破的CAP不可三者兼得的理论神话,使得分布式数据库技术得到了革命性的进步。 
      
         严格来讲Dremel与Bigtable和Spanner解决的问题有所不同,Dremel侧重于对应海量数据的实时处理,而Bigtable和Spanner更侧重于传统的关系型数据库支持功能对齐和替换,并不是简单产品替换关系。从GOOGLE分布式数据库技术发展历程看,这些技术得以成功推出,有创造性的新锐视角和解决方案,更有其坚持在廉价PC服务器上面构筑海量数据处理系统的理想和情怀,更有起高超的技术实力和团队合作,这些因素的结合,使得技术难关被不断的突破,分布式数据库产品得以大成,这些产品的确值得技术人员去深入学习和体会。 
      
         为了更好的对比和分析GOOGLE的分布式数据库技术,本文从Bigtable、Dremel、Spanner数据模型、系统架构、数据查询原理、应用场景和关键技术进行深入分析,最后对于其特点进行对比,从而使得读者对应GOOGLE的分布式数据库技术有一个初步的认识。 
      
      
    2 BIGTABLE开山壁祖 
      
    2.1Bigtable的数据模型 
      
    2.1.1Bigtable的Key-Value数据结构 
      
         Bigtable采用Key-Value数据结构,Key由行关键字、列关键字、时间戳组合而成,Value为对应数据内容,行关键字和列关键字都是字符串数据类型,时间戳是一个64位的长整数,精确到毫秒的时间戳,这三个属性在一个数据库中全局唯一,由Key和Value构成的KV数据结构称为一个数据项,考虑到分布式数据库的多副本的特性,数据项会按照时间戳进行排序,并对于过期的数据项进行过期回收,其数据结构如图2-1所示。 
      

     
      
    图2-1 Bigtable KV结构示意图 
      
    2.1.2Bigtable的数据模型层次 
      
         Bigtable数据模型由下而上,主要部件可以初分为四个层面,最底层为SSTABLE,存放在GFS分布式文件系统中,为数据存储MAP结构体,第二层TABLET结构体,一个表可以由一个或者多个Tablet构成,由一系列的SSTABLE构成,第三层TABLET服务器,管理一组TABLET数据体,最上层Bigtable数据库,由多个TABLET服务器和一个Master服务器、客户端访问连接支持软件构成,最终形成了一个分布式数据库,对外提供数据库服务,层次关系如图2-2所示。 
      

     
      
    图2-2 Bigtable各级数据模型视图 
      
         数据项基于一种叫做SSTABLE的数据格式,SSTABLE是一种持久化、排序的、不可更改的MAP数据结构,每一个SSTABLE由一系列数据块构成,在每一个SSTABLE的最后存储着块索引,SSTABLE使用这些索引来定位数据块,在每一个SSTABLE被打开时,块索引会自动加载到内存中。SSTABLE提供了二种数据访问方式,第一种方式,使用二分法查找内存中的块索引,根据对应的块索引把对应的数据块读取到内存中,此种方式只会发起一次磁盘寻址,第二种方式是把整个SSTABLE都整体加载到内存中。SSTABLE基于GOOGLE GFS全局文件系统基础上,实现对应文件系统层面的负载均衡和IO能力分担, 
      
         从特点看,BIGTABLE不直接支持对应数据的修改操作,通过时间戳方式来间接支持数据修改。数据读取方式,提供了二种不同的机制,二分法的块索引定位加载,类似于ORACLE提供的索引访问方式;SSTABLE的全部加载,类似于ORACLE提供的全表扫描机制,从技术角度看,不管分布式数据库技术本身如何发展,对小粒度数据精确加载和整体数据加载的场景,从这点看,所有的数据库存储结构应该都是殊途同归。 
      
         一个TABLET由TABLET Log存储TABLET的提交数据的Redo记录数据,MEMTABLE是内存缓存,存储最近访问的记录数据,数据持久化到一组SSTABLE文件中。 
      
         最上层Bigtable数据库服务层,对外提供Bigtable的数据库服务功能,为Bigtable的最顶层结构。 
      
    2.2Bigtable的系统架构 
      
         Bigtable由客户端连接库、Master服务器、TABLET服务器组构成,客户端链接库提供数据库客户端访问功能,提供服务端访问,比如对于数据寻址的缓存信息; Master服务器负责TABLET服务器组的管理,根据负载情况,可以动态的增加和删除TABLET服务器,维护TABLET服务器组;TABLET服务器管理该服务器上面的TABLET集合,完成TABLET数据读取和写入操作,当TABLET太大时,对TABLET进行拆分,在一个Bigtable中只能有一个Master服务器,通过Chubby保证Master服务器的唯一性;Chubby服务提供了TABLET根信息服务、系统Master管理和TABLET服务出错的善后处理任务,保存Bigtable数据库Schema信息。Bigtable整个系统架构如图2-3所示。 
      

     
      
    图2-3 Bigtable系统架构图 
      
    2.3Bigtable的数据查询 
      
    2.3.1Bigtable的数据定位 
      
         Bigtable数据查询,首先是对于数据所在tablet进行定位,Bigtable的位置定位,分为三个步骤。 
      
         第一步,客户端程序在缓存中查找tablet位置是否在缓存中存在,如果在缓存中存在就直接读取,如果不存在,通过Chubby服务器查询tablet的根节点,取到Bigtable根节点tablet信息; 
      
         第二步,根据Bigtable根节点的tablet信息,找到数据对应METADATA的数据表,该数据表中存储着所有的用户数据tablet的位置信息; 
      
         第三步,根据METADATA的数据表存储的用户数据tablet信息,找到数据对应tablet信息,根据该位置信息,读取到tablet数据到客户端。 
      
    2.3.2Bigtable的数据读取 
      
         Bigtable数据读取时以Tablet为单位,必须读取到构成该Tablet所有涉及到SSTABLE,发起读取操作时,首先要对操作完整性和权限做检查,检查通过后,首先在Tablet服务器所在的缓存里面查找,Bigtable提供二级缓存缓存,一种是以Key-Value形式的一级数据缓存,如果在这种级别中的缓存中无法找到,访问二级数据缓存,二级数据是SSTABLE的BLOCK数据缓存,对于热点局部性数据来讲,这种BLOCK环境命中率很高,对于系统性能改善更加有效。 
      
         在数据缓存中如果没有找到对应的读取数据,启动数据定位的三个步骤,完成对于TABLET的位置信息读取,TABLET信息读取转换为对应SSTABLE数据,根据SSTABLE数据是否进行了压缩,对于涉及到该TABLET的SSTABLE进行解压操作,完成读取后返回到客户端。 
      
    2.3.3Bigtable的数据写入 
      
         Bigtable数据写入时,首先是坚持该操作数据格式是否正确,并判断该操作发起者是否有该操作的权限,权限判断是通过存储在Chubby服务器上面的权限控制表来判断。判断操作发起者具备该操作的权限后,会发起具体写入数据动作,该动作是一个事务操作,操作必须保证对于Tablet中数据写入成功,否则不会写入TABLET,如果写入成功后,会把提交该操作修改到Tablet对应的Redo日志中,同时该写入内容会插入到MEMTABLE中。 
      
    2.4应用场景和关键技术 
      
    2.4.1应用场景 
      
         Bigtable从数据存储特点看,属于行式数据库存储模型,虽然Bigtable具备把列分配到不同的SSTABLE,形成不同的列簇的情况。由于Bigtable采用按照行存储模型,因此对于数据表中的一行可以实现事务性操作,实现数据单表上的事务控制,虽然Bigtable提供了批量数据的访问接口,但是还不支持跨行的事务操作。 
      
         而Bigtable采用的KV结构,可以按照Key中的行关键字和列关键字,对于海量数据进行列维度和行维度的切片管理,分别到同步到TABLET服务器上面。在一个BIGTABLE系统中,TABLET服务器的数量可以根据负载要求,做动态的调整,对于TABLET服务器数量无上限,这样就可以支持对于数据库负载的水平扩展,根据GOOGLE提供的数据,单TABLET服务器在BLOCK为64KB时,KEY-VALUE中的VALUE为1K的长度是,可以支持1200次请求,一个TABLET服务器可以处理75M数据读取,当TABLET服务器数量增加后,其读取数据的能力可以提升,当并不会严格的遵循线性关系,可以从GOOGLE在BIGTABLE中提供的测试数据看出,TABLET服务器增加和整体系统吞吐能力提升的关系,参见图2-4。 
      
         可以看出对于TABLET的扫描和在TABLET中内存中的随机读,提升效率最为明显,这是由于在TABLET服务器增加过程中,此类操作都是在内存中进行,因此服务器越多,支持吞吐量就会更大。顺序读、随机写、顺序写提升比率低于前两种操作,顺序读由于读取SSTABLE到TABLET服务器时,一个BLOCK被读取时,SSTABLE中相邻接的BOLCK会被加载到BLOCK缓存中,后续会在缓存中被读取到该BLOCK,不在需要在从SSTABLE中读取。随机写和序列写在采用了批量提交的方式,通过数据流的方式来进行处理,此种操作方式随TABLET的增加,提升效果还是比较明显。谁TABLET服务器提升效果最低的为随机读,原因是随机读取时,为了访问KEY-VALUE值中,VALUE为1K的数据时,会同步把整个SSTABLE中一个BLOCK都读取出来,当随机读取请求数量增加时,整个网络带宽会急剧上升,导致每个TABLET服务器吞吐能力下降,整个系统能够处理的随机请求数量变少。 
      

     
      
    图2-4 tablet服务器与系统IO吞吐量关系图 
      
    2.4.2关键技术 
      
         从Bigtable应用场景看,BIGTABLE系统设计需要解决下面的核心技术 
      
         技术难题一 系统鲁棒性 
      
         对于分布式环境,对于网络受损、内存数据损坏、时间误差,机器硬件损坏这这种常见的问题出现后,系统的容错处理能力,要求Bigtable系统具有较强的鲁棒性和容错性。 
      
         技术难题二 系统容错和负载与效率的平衡 
      
         TABLET副本数量增加会增加系统容错能力,但是会增加系统管理代价和同步成本,效率就会相应的下降;系统负载和效率增加,有限制了数据副本数量、副本数量下降会导致系统容错性减低,GOOGLE具体处理算法,这些在GOOGLE对外公布的论文中没有进行详细的描述,在开源产品HBASE遇到问题看,这些都是一些技术难点。 
      
         技术难题三 不同查询特点的应对 
      
         由于系统不同查询特点,数据特点,对于BIGTABLE中的各种关键配置参数的配置方式,比如SSTABLE中BLOCK大小的选择、缓存算法设计细节。 
      
         上面的这些技术难题相信已经被GOOGLE很好的解决,不过这些解决经验和具体技术细节GOOGLE并没有进行公开。 
      
    2.4.3BIGTABLE后续发展 
      
         Bigtable做为GOOGLE公布的第一代分布式数据库技术,结合下层的GFS文件系统,上结合MAP-REDUCE框架完成数据的分片计算,构成了GOOGLE的分布式计算体系。而BIGTABLE目前只有在一个系统只支持一个Master服务器,同时对于多表事务性无法支持,这些都是Bigtable后续要解决的技术问题。对于不同特点数据库查询请求,不同特点存放数据, BIGTABLE的关键参数应该如何配置,是否有一种完美的配置参数,可以完全满足各种不同特点的查询场景,从目前来看,还不能做到的,还必须根据数据特点,对BIGTABLE的参数做相应定制,包括一些BIGTABLE要使用的GFS文件配置参数、网络配置参数,这些都成为使用Bigtable数据库过程中一些较为复杂问题,整个Bigtable数据库使用技术门槛仍然比较高。 
      
    3  Dremel 
      
    3.1背景 
      
         大规模交互性数据分析处理在整个行业中应用越来越广泛,对于交互型分析对于数据处理的响应时间要求比较高,而原有Bigtable数据库设计上并没有考虑对于交互式场景要求,对于大大规模交互数据分析处理响应性不够,因此Dremel就应运而生,Dremel解决大规模交互数据分析的实时性问题,可以做到秒级的数据响应,GOOGLE在测试中宣称,可以在3秒钟的时间处理1PB数据。 
      
         在大规模交互数据分析中,会有这样一种场景,需要参加数据分析的原始数据量非常大,但是最终结果集数据量会很小,往往是一个分析结果或者是汇总型的数据,这种场景就是大型交互时数据分析的典型场景。从GOOGLE分布式数据库产品的战略定位看,Dremel和Bigtable的定位有所不同,Dremel更适合对于交互式场景,而Bigtable通常会跟MapReduce配置,做为大数据处理搭配处理,当然Dremel同样可以与MAPReduce结合使用。因此Dremel并不是取代Bigtable的一种分布式数据库,而是一种补充,从技术演进角度看,由于Dremel数据库公开时间晚于Bigtable,因此做为Google第二代分布式数据库代表之一。 
      
    3.2Dremel的数据模型 
      
    3.2.1Dremel嵌套列数据模型 
      
         Dremel采用是嵌套列数据模型,该数据模型把嵌套数据拆分为列结构加以存储,在查询时把数据重建为嵌套数据,原有列存储数据库通常属于关系型数据库,在嵌套类型的数据处理还未采用这种结构,GOOGLE创造性的把嵌套数据处理为列数据库,并且技术指标还能大幅提升,满足大型数据的交互式查询要求,不得不说这个GOOGLE的一个新创造,但为什么是这样的列嵌套结构,而不是其他数据结构,这点GOOGLE并没有进行介绍说明,因此这一点理解上面有一定困难,不过在后续介绍中,会发现这种结构在数据查询处理时的优势和特点。 
      
         一提起数学模型,很多程序员就会晕,不过仔细看看,稍微有一点数据知识的人,应该就能够看明白,Dremel的数学模型如下: 
      
         π = dom |  
      
         π是数据库中的一条记录类型,Ai是数据库记录的一个字段,*为一个重复字段,?为可选字段,这个数据模型说明该一条记录是由多个字段构成,字段类型由可选字段、必选字段、重复字段组成,可选字段可以出现,也可以不出现;必选字段必须会出现,重复字段则会出现多次。在GOOGLE公开的资料中,在图3-1给出嵌套记录样例和数据模式定义,Document是一个网页类型的数据模式,该网页有整形的DocId和可选的Link分组属性,Link分组属性包含了多个Backword和Forward可 
      

     
      
    图3-1 嵌套式记录样例和数据模式定义 
      
         重复的整型属性构成列表,一个网页包括了多个可以重复的名字分组,每个名字分组,可以包括多个语言分组和可选的URL地址,语言分组包括必选的CODE字段,可选的Country属性。整个Document嵌套层次关系如图3-2: 
      

     
      
    图3-2嵌套层次关系图 
      
    3.2.2Dremel的重复深度和定义深度 
      
         在Dremel中如何对于嵌套式数据结构,在列存储后进行重建,依赖于二个重要参数,一个是Repetition Level重复深度,一个是Definition Level定义深度.重复深度和定义深度仅针对重复字段来计算层次,用于描述这个值什么重复字段的此值重复了,以此确定重复的位置;定义深度描述多个嵌套层次的路径上,有多少个字段是有值的,通过这二个参数可以完成嵌套数据的列式化存储。 
      
    3.2.3Dremel的存储和重构 
      
         Dremel存储是采用列式模型,按照列进行嵌套式数据的存储,读取数据时,根据定义在列式模型中的数据,按照顺序,把列式存储数据还原到原有的嵌套式数据结构。 
      
    3.3Dremel的系统架构和查询 
      
         Dremel采用的是多层次服务树架构,最上层Dremel的根服务器,根服务器接收所有的查询请求,读取数据库相关的元数据,并把相关请求下发到下一级查询服务器查询。中间层查询服务器负责根服务器请求的派发和叶子服务器的查询结果的处理。叶子服务器与具体存储层直接通讯,完成存储系统上相关数据的读取和查询动作,整个系统架构图如下图所示。 
      

     
      
    图3-3 Dremel多层次查询树架构 
      
         Dremel查询语句基于SQL语法,并根据自身列存储模型进行了定制,构成在Dremel的存储结构上面高效的执行,对于Dremel查询树结构,会对于根查询服务器收到查询请求进行层层拆分,最终传递到叶节点的查询服务器,叶节点查询服务器获取的数据结果后,进行过滤和汇总这样的计算,然后在上传到上级查询服务器,层层汇总结果后,最终返回结果数据。 
      
         Dremel支持多客户端并发查询,通常情况下查询请求会被同时运行,查询派发器,会根据系统的负载情况和查询优先级进行一定的查询调度操作,并提供容错性,对于查询节点响应缓慢和访问数据不达的情况进行调整。 
      
    3.4应用场景和关键技术 
      
    3.4.1应用场景 
      
         Dremel定位为交互系统大型数据处理的数据库系统,适合数据读取数据量大,但是返回数据量小的场景,对于返回数据量大的场景,采用Dremel就不太合适。 
      
    3.4.2关键技术 
      
         Dremel采用的嵌套式列存储结构+多层次查询查询树,大型数据处理快速响应的关键,列存储结构可以只对查询关心的列数据读取,多层次查询树结构对于数据查询的拆分和聚合的方式有效的匹配,这是Dremel在该场景速度快于Bigtable的关键技术; 
      
         Dremel号称可以在秒级进行1PB级的数据

    大数据异构环境数据同步工具DataX 与Sqoop 之比较

    唐半张 发表了文章 0 个评论 2397 次浏览 2015-10-07 09:33 来自相关话题

    从接触DataX起就有一个疑问,它和Sqoop到底有什么区别,昨天部署好了DataX和Sqoop,就可以对两者进行更深入的了解了。 两者从原理上看有点相似,都是解决异构环境的数据交换问题,都支持oracle,mysql,hdfs,hive的互相交换 ...查看全部
    从接触DataX起就有一个疑问,它和Sqoop到底有什么区别,昨天部署好了DataX和Sqoop,就可以对两者进行更深入的了解了。
    两者从原理上看有点相似,都是解决异构环境的数据交换问题,都支持oracle,mysql,hdfs,hive的互相交换,对于不同数据库的支持都是插件式的,对于新增的数据源类型,只要新开发一个插件就好了,
    但是只细看两者的架构图,很快就会发现明显的不同
    DataX架构图
     
     
    Job: 一道数据同步作业Splitter: 作业切分模块,将一个大任务与分解成多个可以并发的小任务. Sub-job: 数据同步作业切分后的小任务 Reader(Loader): 数据读入模块,负责运行切分后的小任务,将数据从源头装载入DataX Storage: Reader和Writer通过Storage交换数据 Writer(Dumper): 数据写出模块,负责将数据从DataX导入至目的数据地
    Sqoop架构图

     
     
    DataX 直接在运行DataX的机器上进行数据的抽取及加载。
    而Sqoop充分里面了map-reduce的计算框架。Sqoop根据输入条件,生成一个map-reduce的作业,在Hadoop的框架中运行。

    从理论上讲,用map-reduce框架同时在多个节点上进行import应该会比从单节点上运行多个并行导入效率高。而实际的测试中也是如此,测试一个Oracle to hdfs的作业,DataX上只能看到运行DataX上的机器的数据库连接,而Sqoop运行时,4台task-tracker全部产生一个数据库连接。调起的Sqoop作业的机器也会产生一个数据库连接,应为需要读取数据表的一些元数据信息,数据量等,做分区。

    Sqoop现在作为Apache的顶级项目,如果要我从DataX和Sqoop中间选择的话,我想我还是会选择Sqoop。而且Sqoop还有很多第三方的插件。早上使用了Quest开发的OraOop插件,确实像quest说的一样,速度有着大幅的提升,Quest在数据库方面的经验,确实比旁人深厚。


    Transfer highly clustered data more than five times faster than with Sqoop alone
    Avoid scalability issues that can occur with Sqoop when data has no primary key or is not stored in primary key order
    Reduce CPU by up to 80 percent and IO time by up to 95 percent
    Prevent disruption to concurrently running Oracle workload
    Get free use of Data Transporter for Hive, a Java command-line utility that allows you to execute a Hive query and insert the results into an Oracle table


    在我的测试环境上,一台只有700m内存的,IO低下的oracle数据库,百兆的网络,使用Quest的Sqoop插件在4个并行度的情况下,导出到HDFS速度有5MB/s ,这已经让我很满意了。相比使用原生Sqoop的2.8MB/s快了将近一倍,sqoop又比DataX的760KB/s快了两倍。

    另外一点Sqoop采用命令行的方式调用,比如容易与我们的现有的调度监控方案相结合,DataX采用xml 配置文件的方式,在开发运维上还是有点不方便。