当前位置: 首页 > news >正文

电子商务网站建设与维护总结做网站好的公司有哪些

电子商务网站建设与维护总结,做网站好的公司有哪些,怎么给设计网站推广,网站开发常用字体查询引擎 一、Phoenix 贡献者#xff1a;#xff1a;Salesforce 简介#xff1a;这是一个Java中间层#xff0c;可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写#xff0c;代码位于GitHub上#xff0c;并且提供了一个客户端可嵌入的JDBC驱动。 Phoen… 查询引擎 一、Phoenix 贡献者Salesforce 简介这是一个Java中间层可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写代码位于GitHub上并且提供了一个客户端可嵌入的JDBC驱动。 Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器对于简单查询来说其性能量级是毫秒对于百万级别的行数来说其性能量级是秒。 Phoenix最值得关注的一些特性有 ❶嵌入式的JDBC驱动实现了大部分的java.sql接口包括元数据API ❷可以通过多部行键或是键/值单元对列进行建模 ❸完善的查询支持可以使用多个谓词以及优化的扫描键 ❹DDL支持通过CREATE TABLE、DROP TABLE及ALTER TABLE来添加/删除列 ❺版本化的模式仓库当写入数据时快照查询会使用恰当的模式 ❻DML支持用于逐行插入的UPSERT VALUES、用于相同或不同表之间大量数据传输的UPSERT ❼SELECT、用于删除行的DELETE ❽通过客户端的批处理实现的有限的事务支持 ❾单表——还没有连接同时二级索引也在开发当中 ➓紧跟ANSI SQL标准 Phoenix官方网站 二、Stinger 贡献者Hortonworks 简介原叫Tez下一代Hive,Hortonworks主导开发运行在YARN上的DAG计算框架。 某些测试下Stinger能提升10倍左右的性能同时会让Hive支持更多的SQL其主要优点包括 ❶让用户在Hadoop获得更多的查询匹配。其中包括类似OVER的字句分析功能支持WHERE查询让Hive的样式系统更符合SQL模型。 ❷优化了Hive请求执行计划优化后请求时间减少90%。改动了Hive执行引擎增加单Hive任务的被秒处理记录数。 ❸在Hive社区中引入了新的列式文件格式如ORC文件提供一种更现代、高效和高性能的方式来储存Hive数据。 ❹引入了新的运行时框架——Tez旨在消除Hive的延时和吞吐量限制。Tez通过消除不必要的task、障碍同步和对HDFS的读写作业来优化Hive job。这将优化Hadoop内部的执行链彻底加速Hive负载处理。 Stinger官方网站 三、Presto 贡献者Facebook 简介Facebook开源的数据查询引擎Presto 可对250PB以上的数据进行快速地交互式分析。该项目始于 2012 年秋季开始开发目前该项目已经在超过 1000 名 Facebook 雇员中使用运行超过 30000 个查询每日数据在 1PB 级别。Facebook 称 Presto 的性能比诸如 Hive 和 Map*Reduce 要好上 10 倍有多。 Presto 当前支持 ANSI SQL 的大多数特效包括联合查询、左右联接、子查询以及一些聚合和计算函数支持近似截然不同的计数(DISTINCT COUNT)等。 github源代码下载 四、Shark 简介Shark即Hive on Spark本质上是通过Hive的HQL解析把HQL翻译成Spark上的RDD操作然后通过Hive的metadata获取数据库里的表信息实 际HDFS上的数据和文件会由Shark获取并放到Spark上运算。Shark的特点就是快完全兼容Hive且可以在shell模式下使用 rdd2sql()这样的API把HQL得到的结果集继续在scala环境下运算支持自己编写简单的机器学习或简单分析处理函数对HQL结果进一 步分析计算。 ❶Shark速度快的原因除了Spark平台提供的基于内存迭代计算外在设计上还存在对Spark上进行了一定的改造主要有 ❷partial DAG execution对join优化调节并行粒度因为Spark本身的宽依赖和窄依赖会影响并行计算和速度 基于列的压缩和存储把HQL表数据按列存每列是一个array存在JVM上避免了JVM GC低效而压缩和解压相关的技术是Yahoo!提供的。 结来说Shark是一个插件式的东西在我现有的Spark和Hive及hadoop-client之间在这两套都可用的情况下Shark只 要获取Hive的配置还有metastore和exec等关键包Spark的路径Shark就能利用Hive和Spark把HQL解析成RDD 的转换把数据取到Spark上运算和分析。在SQL on Hadoop这块Shark有别于ImpalaStringer而这些系统各有自己的设计思路相对于对MR进行优化和改进的思路Shark的思 路更加简单明了些。 Shark官方网站 五、Pig 简介Pig是一种编程语言它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义如日志文件。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。 Pig最大的作用就是对mapreduce算法(框架)实现了一套shell脚本 类似我们通常熟悉的SQL语句在Pig中称之为Pig Latin在这套脚本中我们可以对加载出来的数据进行排序、过滤、求和、分组(group by)、关联(Joining)Pig也可以由用户自定义一些函数对数据集进行操作也就是传说中的UDF(user-defined functions)。 Pig官方网站 六、Cloudera Impala 贡献者:Cloudera 简介Cloudera Impala 可以直接为存储在HDFS或HBase中的Hadoop数据提供快速交互式的SQL查询。除了使用相同的存储平台外 Impala和Apache Hive一样也使用了相同的元数据SQL语法Hive SQLODBC驱动和用户接口Hue Beeswax这就很方便的为用户提供了一个相似并且统一的平台来进行批量或实时查询。 Cloudera Impala 是用来进行大数据查询的补充工具。 Impala 并没有取代像Hive这样基于MapReduce的分布式处理框架。Hive和其它基于MapReduce的计算框架非常适合长时间运行的批处理作业例 如那些涉及到批量 Extract、Transform、Load 即需要进行ETL作业。 Impala 提供了 ❶数据科学家或数据分析师已经熟知的SQL接口 ❷能够在Apache Hadoop 的大数据中进行交互式数据查询 ❸ Single system for big data processing and analytics so customers can avoid costly modeling and ETL just for analytics Cloudera Impala官方网站 七、Apache Drill 贡献者MapR 简介Apache Drill是是一个能够对大数据进行交互分析、开源的分布式系统且基于Google Dremel实现它能够运行在上千个节点的服务器集群上且能在几秒内处理PB级或者万亿条的数据记录。Drill能够帮助企业用户快速、高效地进行 Hadoop数据查询和企业级大数据分析。Drill于2012年8月份由Apache推出。 从Drill官方对其架构的介绍中得知其具有适于实时的分析和快速的应用开发、适于半结构化/嵌套数据的分析、兼容现有的SQL环境和 Apache Hive等特征。另外Drill的核心模块是Drillbit服务该服务模块包括远程访问子模块、SQL解析器、查询优化器、任务计划执行引擎、存储 插件接口DFS、HBase、Hive等的接口、分布式缓存模块等几部分如下图所示 Apache Drill官方网站 八、Apache Tajo 简介Apache Tajo项目的目的是在HDFS之上构建一个先进的数据仓库系统。Tajo将自己标榜为一个“大数据仓库”但是它好像和之前介绍的那些低延迟查询引擎类 似。虽然它支持外部表和Hive数据集通过HCatalog但是它的重点是数据管理提供低延迟的数据访问以及为更传统的ETL提供工具。它也需 要在数据节点上部署Tajo特定的工作进程。 Tajo的功能包括 ❶ANSI SQL兼容 ❷JDBC 驱动 ❸集成Hive metastore能够访问Hive数据集 ❹一个命令行客户端 ❺一个自定义函数API Apache Tajo官方网站 九、Hive 简介hive是基于Hadoop的一个数据仓库工具可以将结构化的数据文件映射为一张数据库表并提供简单 的sql查询功能可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低可以通过类SQL语句快速实现简单的MapReduce统计不必开发专门的MapReduce应用十分适合数据仓库的统计分析。 Hive官方网站 流式计算 一、Facebook Puma 贡献者Facebook 简介实时数据流分析 二、Twitter Rainbird 贡献者Twitter 简介Rainbird一款基于Zookeeper, Cassandra, Scribe, Thrift的分布式实时统计系统这些基础组件的基本功能如下 ❶ ZookeeperHadoop子项目中的一款分布式协调系统用于控制分布式系统中各个组件中的一致性。 ❷CassandraNoSQL中一款非常出色的产品集合了Dynamo和Bigtable特性的分布式存储系统用于存储需要进行统计的数据统计数据并且提供客户端进行统计数据的查询。需要使用分布式Counter补丁CASSANDRA-1072 ❸ ScribeFacebook开源的一款分布式日志收集系统用于在系统中将各个需要统计的数据源收集到Cassandra中。 ❹ ThriftFacebook开源的一款跨语言C/S网络通信框架开发人员基于这个框架可以轻易地开发C/S应用。 用处 Rainbird可以用于实时数据的统计 ❶统计网站中每一个页面域名的点击次数 ❷内部系统的运行监控统计被监控服务器的运行状态 ❸记录最大值和最小值 三、Yahoo S4 贡献者Yahoo 简介S4Simple Scalable Streaming System最初是Yahoo!为提高搜索广告有效点击率的问题而开发的一个平台通过统计分析用户对广告的点击率排除相关度低的广告提升点击率。 目前该项目刚启动不久所以也可以理解为是他们提出的一个分布式流计算Distributed Stream Computing的模型。 S4的设计目标是 ·提供一种简单的编程接口来处理数据流 ·设计一个可以在普通硬件之上可扩展的高可用集群。 ·通过在每个处理节点使用本地内存避免磁盘I/O瓶颈达到最小化延迟 ·使用一个去中心的对等架构所有节点提供相同的功能和职责。没有担负特殊责任的中心节点。这大大简化了部署和维护。 ·使用可插拔的架构使设计尽可能的即通用又可定制化。 ·友好的设计理念易于编程具有灵活的弹性 Yahoo S4官方网站 四、Twitter Storm 贡献者Twitter 简介Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架它原来是由BackType开发后BackType被Twitter收购将Storm作为Twitter的实时数据分析系统。 实时数据处理的应用场景很广泛例如商品推荐广告投放它能根据当前情景上下文用户偏好地理位置已发生的查询和点击等来估计用户点击的可能性并实时做出调整。 storm的三大作用领域 1.信息流处理Stream Processing Storm可以用来实时处理新数据和更新数据库兼具容错性和可扩展性,它 可以用来处理源源不断的消息并将处理之后的结果保存到持久化介质中。 2.连续计算Continuous Computation Storm可以进行连续查询并把结果即时反馈给客户比如将Twitter上的热门话题发送到客户端。 3.分布式远程过程调用Distributed RPC 除此之外Storm也被广泛用于以下方面 精确的广告推送实时日志的处理 Twitter Storm官方网站 迭代计算 一、Apache Hama 简介Apache Hama是一个纯BSPBulk Synchronous Parallel计算框架模仿了Google的Pregel。用来处理大规模的科学计算特别是矩阵和图计算。 ❶建立在Hadoop上的分布式并行计算模型。 ❷基于 Map/Reduce 和 Bulk Synchronous 的实现框架。 ❸运行环境需要关联 Zookeeper、HBase、HDFS 组件。 Hama中有2个主要的模型: – 矩阵计算(Matrix package) – 面向图计算(Graph package) Apache Hama官方网站 二、Apache Giraph 代码托管地址 GitHub 简介Apache Giraph是一个可伸缩的分布式迭代图处理系统灵感来自BSPbulk synchronous parallel和Google的Pregel与它们 区别于则是是开源、基于 Hadoop 的架构等。 Giraph处理平台适用于运行大规模的逻辑计算比如页面排行、共享链接、基于个性化排行等。Giraph专注于社交图计算被Facebook作为其Open Graph工具的核心几分钟内处理数万亿次用户及其行为之间的连接。 三、HaLoop 简介迭代的MapReduceHaLoop——适用于迭代计算的Hadoop 。 Hadoop与HaLoop的不同 与Hadoop比较的四点改变 1.提供了一套新的编程接口更加适用于迭代计算 HaLoop给迭代计算一个抽象的递归公式 2.HaLoop的master进行job内的循环控制直到迭代计算结束 3.Task Scheduler也进行了修改使得任务能够尽量满足data locality 4.slave nodes对数据进行cache并index索引索引也以文件的形式保存在本地磁盘。 HaLoop官网 四、Twister 简介Twister 迭代式MapReduce框架Twister是由一个印度人开发的其架构如下 在Twister中大文件不会自动被切割成一个一个block因而用户需提前把文件分成一个一个小文件以供每个task处理。在map阶段 经过map处理完的结果被放在分布式内存中然后通过一个broker networkNaradaBroking系统将数据push给各个reduce taskTwister假设内存足够大中间数据可以全部放在内存中在reduce阶段所有reduce task产生的结果通过一个combine操作进行归并此时用户可以进行条件判定 确定迭代是否结束。combine后的数据直接被送给map task开始新一轮的迭代。为了提高容错性Twister每隔一段时间会将map task和reduce task产生的结果写到磁盘上这样一旦某个task失败它可以从最近的备份中获取输入重新计算。 为了避免每次迭代重新创建taskTwister维护了一个task pool每次需要task时直接从pool中取。在Twister中所有消息和数据都是通过broker network传递的该broker network是一个独立的模块目前支持NaradaBroking和ActiveMQ。 离线计算 一、Hadoop MapReduce 简介MapReduce是一种编程模型用于大规模数据集大于1TB的并行运算。概念”Map映射” 和”Reduce归约”和它们的主要思想都是从函数式编程语言里借来的还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并 行编程的情况下将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map映射函数用来把一组键值对映射成一组新的键值对指定并发的Reduce归约函数用来保证所有映射的键值对中 的每一个共享相同的键组。 Hadoop MapReduce官方网站 二、Berkeley Spark 简介Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行Spark拥有Hadoop MapReduce所具有的优点但不同于MapReduce的是Job中间输出结果可以保存在内存中从而不再需要读写HDFS因此Spark能更好 地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。 三、DataTorrent 简介DataTorrent基于Hadoop 2.x构建是一个实时的、有容错能力的数据流式处理和分析平台它使用本地Hadoop应用程序而这些应用程序可以与执行其它任务如批处理的应用程序共存。该平台的架构如下图所示 相关文章DataTorrent 1.0每秒处理超过10亿个实时事件 DataTorrent 将数据分析速度从“实时”提升至“现在时” 键值存储 一、LevelDB 贡献者Google 简介Leveldb是一个google实现的非常高效的kv数据库目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能主要归功于它的良好的设计。特别是LMS算法。 LevelDB 是单进程的服务性能非常之高在一台4核Q6600的CPU机器上每秒钟写数据超过40w而随机读的性能每秒钟超过10w。 此处随机读是完全命中内存的速度如果是不命中 速度大大下降。 LevelDB官方网站 二、RocksDB 贡献者facebook 简介RocksDB虽然在代码层面上是在LevelDB原有的代码上进行开发的但却借鉴了Apache HBase的一些好的idea。在云计算横行的年代开口不离HadoopRocksDB也开始支持HDFS允许从HDFS读取数据。RocksDB 支持一次获取多个K-V还支持Key范围查找。LevelDB只能获取单个Key。 RocksDB除了简单的Put、Delete操作还提供了一个Merge操作说是为了对多个Put操作进行合并。 RocksDB提供一些方便的工具这些工具包含解析sst文件中的K-V记录、解析MANIFEST文件的内容等。RocksDB支持多线程合并而LevelDB是单线程合并的。 RocksDB官方网站 三、HyperDex 贡献者Facebook HyperDex是一个分布式、可搜索的键值存储系统特性如下 分布式KV存储系统性能能够随节点数目线性扩展吞吐和延时都能秒杀现在风头正劲的MonogDB吞吐甚至强于Redis使用了hyperspace hashing技术使得对存储的K-V的任意属性进行查询成为可能 官网http://hyperdex.org/ 四、TokyoCabinet 日本人Mikio Hirabayashi平林干雄开发的一款DBM数据库。Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符 串。这里没有数据类型和数据表的概念。当 做为Hash表数据库使用时每个key必须是不同的,因此无法存储两个key相同的值。提供了以下访问方法:提供key,value参数来存储按 key删除记录按key来读取记录另外遍历key也被支持虽然顺序是任意的不能被保证。这些方法跟Unix标准的DBM,例如GDBM,NDBM 等等是相同的但是比它们的性能要好得多因此可以替代它们) 。下一代KV存储系统支持strings、integers、floats、lists、maps和sets等丰富的数据类型。TokyoCabinet官方网站五、VoldemortVoldemort是一个分布式键值存储系统是Amazon’s Dynamo的一个开源克隆。特性如下支持自动复制数据到多个服务器上。支持数据自动分割所以每个服务器只包含总数据的一个子集。提供服务器故障透明处理功能。支持可拨插的序化支持以实现复杂的键-值存储它能够很好的5.集成常用的序化框架如Protocol Buffers、Thrift、Avro和Java Serialization。数据项都被标识版本能够在发生故障时尽量保持数据的完整性而不会影响系统的可用性。每个节点相互独立互不影响。支持可插拔的数据放置策略 官网http://project-voldemort.com/ 六、Amazon Dynamo贡献者亚马逊简介Amazon Dynamo 是一个经典的分布式Key-Value 存储系统具备去中心化高可用性高扩展性的特点但是为了达到这个目标在很多场景中牺牲了一致性。Dynamo在Amazon中得到了成功的应用能 够跨数据中心部署于上万个结点上提供服务它的设计思想也被后续的许多分布式系统借鉴。如近来火热的Cassandra实际上就是基本照搬了 Dynamo的P2P架构同时融合了BigTable的数据模型及存储算法。Amazon Dynamo官方网站七、Tair贡献者淘宝简介tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失, tair 可以配置数据的备份数目, tair 自动将一份数据的不同备份放到不同的主机上, 当有主机发生异常, 无法正常提供服务的时候, 其于的备份会继续提供服务. tair 的总体结构tair 作为一个分布式系统, 是由一个中心控制节点和一系列的服务节点组成. 我们称中心控制节点为config server. 服务节点是data server. config server 负责管理所有的data server, 维护data server的状态信息. data server 对外提供各种数据服务, 并以心跳的形式将自身状况汇报给config server. config server是控制点, 而且是单点, 目前采用一主一备的形式来保证其可靠性. 所有的 data server 地位都是等价的.八、Apache AccumuloApache Accumulo 是一个可靠的、可伸缩的、高性能的排序分布式的 Key-Value 存储解决方案基于单元访问控制以及可定制的服务器端处理。Accumulo使用 Google BigTable 设计思路基于 Apache Hadoop、Zookeeper 和 Thrift 构建。官网 http://accumulo.apache.org/九、Redis Redis是一个高性能的key-value存储系统和Memcached类似它支持存储的value类型相对更多包括string字符 串、list链表、set集合和zset有序集合。与memcached一样为了保证效率数据都是缓存在内存中区别的是Redis会 周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件并且在此基础上实现了主从同步。 Redis的出现很大程度补偿了memcached这类key/value存储的不足在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端使用很方便。 官网http://redis.io/ 表格存储 一、OceanBase 贡献者阿里巴巴 相关文章26页PPT解密支撑支付宝交易的分布式数据库系统——OceanBase 简介OceanBase是一个支持海量数据的高性能分布式数据库系统实现了数千亿条记录、数百TB数据上的 跨行跨表事务由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的 功能例如临时表视图(view)研发团队把有限的资源集中到关键点上当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。 目前OceanBase已经应用于淘宝收藏夹用于存储淘宝用户收藏条目和具体的商品、店铺信息每天支持45千万的更新操作。等待上线的应用还包括CTU、SNS等每天更新超过20亿更新数据量超过2.5TB并会逐步在淘宝内部推广。 OceanBase 0.3.1在Github开源开源版本为Revision:12336。 官网http://alibaba.github.io/oceanbase/ 二、Amazon SimpleDB 贡献者亚马逊 Amazon SimpleDB是一个分散式数据库以Erlang撰写。同与Amazon EC2和亚马逊的S3一样作为一项Web 服务属于亚马逊网络服务的一部分。 正如EC2和S3SimpleDB的按照存储量在互联网上的传输量和吞吐量收取费用。 在2008年12月1日亚马逊推出了新的定价策略提供了免费1 GB的数据和25机器小时的自由层(Free Tire)。 将其中的数据转移到其他亚马逊网络服务是免费的。 它是一个可大规模伸缩、用 Erlang 编写的高可用数据存储。 官网http://aws.amazon.com/cn/simpledb/ 三、Vertica 贡献者惠普 简介惠普2011年2月份起始3月21号完成收购Vertica。Vertica基于列存储。基于列存储的设 计相比传统面向行存储的数据库具有巨大的优势。同时Vertica支持MPPmassively parallel processing等技术查询数据时Vertica只需取得需要的列而不是被选择行的所有数据其平均性能可提高50x-1000x倍。查询性 能高速度快 Vertica的设计者多次表示他们的产品围绕着高性能和高可用性设计。由于对MPP技术的支持可提供对粒度可伸缩性和可用性的优势。每个节点完全独立运作完全无共享架构降低对共享资源的系统竞争。 Vertica的数据库使用标准的SQL查询同时Vertica的架构非常适合云计算包括虚拟化分布式多节点运行等并且可以和Hadoop/MapReduce进行集成。 Vertica官网http://www.vertica.com/ 四、Cassandra 贡献者facebook 相关文章开源分布式NoSQL数据库系统——Cassandra   Cassandra与HBase的大数据对决 谁是胜者 简介Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发用于储存收件 箱等简单格式数据集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源此后由于Cassandra良好的可扩放性被Digg、Twitter等知名Web 2.0网站所采纳成为了一种流行的分布式结构化数据存储方案。 Cassandra是一个混合型的非关系的数据库类似于Google的BigTable。其主要功能比Dynamo 分布式的Key-Value存储系统更丰富但支持度却不如文档存储MongoDB介于关系数据库和非关系数据库之间的开源产品是非关系数据库当 中功能最丰富最像关系数据库的。支持的数据结构非常松散是类似json的bjson格式因此可以存储比较复杂的数据类型。Cassandra最初 由Facebook开发后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础结合了 Google BigTable基于列族Column Family的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。 Cassandra官网http://cassandra.apache.org/ 五、HyperTable 简介Hypertable是一个开源、高性能、可伸缩的数据库它采用与Google的Bigtable相似的模型。在过去数年中Google为在PC集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。 第一个关键的基础设施是Google File SystemGFS这是一个高可用的文件系统提供了一个全局的命名空间。它通过跨机器和跨机架的文件数据复制来达到高可用性并因此免受传统 文件存储系统无法避免的许多失败的影响比如电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架它与GFS紧密协作帮 助处理收集到的海量数据。第三个基础设施是Bigtable它是传统数据库的替代。Bigtable让你可以通过一些主键来组织海量数据并实现高效的 查询。Hypertable是Bigtable的一个开源实现并且根据我们的想法进行了一些改进。 HyperTable官网http://hypertable.org/ 六、FoundationDB 简介支持ACID事务处理的NoSQL数据库提供非常好的性能、数据一致性和操作弹性。 2015年1月2日FoundationDB已经发布了其key-value数据库的3.0版本主要专注于可伸缩性和性能上的改善。 FoundationDB的CEO David Rosenthal在一篇博客上宣布了新的版本其中展示了FoundationDB 3.0在可伸缩性方面的数据它可以在一个32位的c3.8xlarge EC2实例上每秒写入1440万次这在性能上是之前版本的36倍。 除了性能和可伸缩性的改善之外FoundationDB 3.0还包含了对监控支持的改善。这种监控机制不仅仅是简单的机器检查它添加了对多种潜在的硬件瓶颈的诊断并且把那些高层级的信息整合到现有监控基础架构中。 官网https://foundationdb.com/ 七HBase 贡献者 Fay Chang 所撰写的“Bigtable 简介HBase是一个分布式的、面向列的开源数据库该技术来源于 Fay Chang 所撰写的Google论文“Bigtable一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统File System所提供的分布式数据存储一样HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop 项目的子项目。HBase不同于一般的关系数据库它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。 官网http://hbase.apache.org/ 文件存储 一、CouchDB 简介CouchDB是用Erlang开发的面向文档的数据库系统最近刚刚发布了1.0版本2010年7月14日。CouchDB不是一个传 统的关系数据库而是面向文档的数据库其数据存储方式有点类似lucene的index文件格式CouchDB最大的意义在于它是一个面向web应用 的新一代存储系统事实上CouchDB的口号就是下一代的Web应用存储系统。 特点 一、CouchDB是分布式的数据库他可以把存储系统分布到n台物理的节点上面并且很好的协调和同步节点之间的数据读写一致性。这当然也得靠 Erlang无与伦比的并发特性才能做到。对于基于web的大规模应用文档应用分布式可以让它不必像传统的关系数据库那样分库拆表在应用代码层进行大 量的改动。 二、CouchDB是面向文档的数据库存储半结构化的数据比较类似lucene的index结构特别适合存储文档因此很适合CMS电话本地址本等应用在这些应用场合文档数据库要比关系数据库更加方便性能更好。 三、CouchDB支持REST API可以让用户使用JavaScript来操作CouchDB数据库也可以用JavaScript编写查询语句我们可以想像一下用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便。 其实CouchDB只是Erlang应用的冰山一角在最近几年基于Erlang的应用也得到的蓬勃的发展特别是在基于web的大规模分布式应用领域几乎都是Erlang的优势项目。 官网http://couchdb.apache.org/ 二、MongoDB 简介MongoDB 是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品是非关系数据库当中功能最丰富最像关系数据库的。他支持的数据结构非常松散是类 似json的bson格式因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大其语法有点类似于面向对象的查询语言几 乎可以实现类似关系数据库单表查询的绝大部分功能而且还支持对数据建立索引。 相关文章MongoDB的基本特性与内部构造  大数据吃香 创业公司MongoDB估值达16亿美元 特点 它的特点是高性能、易部署、易使用存储数据非常方便。主要功能特性有 *面向集合存储易存储对象类型的数据。 mongodb集群参考 mongodb集群参考 *模式自由。 *支持动态查询。 *支持完全索引包含内部对象。 *支持查询。 *支持复制和故障恢复。 *使用高效的二进制数据存储包括大型对象如视频等。 *自动处理碎片以支持云计算层次的扩展性。 *支持RUBYPYTHONJAVACPHPC#等多种语言。 *文件存储格式为BSON一种JSON的扩展。 *可通过网络访问。 官网https://www.mongodb.org/ 三、Tachyon 贡献者Haoyuan Li李浩源 简介Tachyon是一个分布式内存文件系统可以在集群里以访问内存的速度来访问存在tachyon里的文 件。把Tachyon是架构在最底层的分布式文件存储和上层的各种计算框架之间的一种中间件。主要职责是将那些不需要落地到DFS里的文件落地到分布式 内存文件系统中来达到共享内存从而提高效率。同时可以减少内存冗余GC时间等。 Tachyon架构 Tachyon的架构是传统的Master—slave架构这里和Hadoop类似TachyonMaster里 WorkflowManager是 Master进程因为是为了防止单点问题通过Zookeeper做了HA可以部署多台Standby Master。Slave是由Worker Daemon和Ramdisk构成。这里个人理解只有Worker Daemon是基于JVM的Ramdisk是一个off heap memory。Master和Worker直接的通讯协议是Thrift。 下图来自Tachyon的作者Haoyuan Li 下载地址https://github.com/amplab/tachyon 四、KFS 简介GFS的C开源版本Kosmos distributed file system (KFS)是一个专门为数据密集型应用搜索引擎数据挖掘等而设计的存储系统类似于Google的GFS和Hadoop的HDFS分布式文件系统。 KFS使用C实现支持的客户端包括CJava和Python。KFS系统由三部分组成分别是metaserver、chunkserver 和client library。 官网http://code.google.com/p/kosmosfs/ 五、HDFS 简介Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高 度容错性的系统适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束来实 现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。 官网http://hadoop.apache.org/ 资源管理 一、Twitter Mesos 开发者Twitter研发人员John Oskasson 简介Apache Mesos是由加州大学伯克利分校的AMPLab首先开发的一款开源群集管理软件支持Hadoop、ElasticSearch、Spark、 Storm 和Kafka等架构由于其开源性质越来越受到一些大型云计算公司的青睐例如Twitter、Facebook等。 参考文章Mesos渐入主流,Twitter模式有望“无限复制”-CSDN.NET 官网http://mesos.apache.org/ 二、Hadoop Yarn Hadoop 新 MapReduce 框架 Yarn。为从根本上解决旧 MapReduce 框架的性能瓶颈促进 Hadoop 框架的更长远发展从 0.23.0 版本开始Hadoop 的 MapReduce 框架完全重构发生了根本的变化。新的 Hadoop MapReduce 框架命名为 MapReduceV2 或者叫 Yarn其架构图如下图所示 Yarn 框架相对于老的 MapReduce 框架什么优势呢我们可以看到 1、这个设计大大减小了 JobTracker也就是现在的 ResourceManager的资源消耗并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了更安全、更优美。 2、在新的 Yarn 中ApplicationMaster 是一个可变更的部分用户可以对不同的编程模型写自己的 AppMst让更多类型的编程模型能够跑在 Hadoop 集群中可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。 3、对于资源的表示以内存为单位 ( 在目前版本的 Yarn 中没有考虑 cpu 的占用 )比之前以剩余 slot 数目更合理。 4、老的框架中JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况现在这个部分就扔给 ApplicationMaster 做了而 ResourceManager 中有一个模块叫做 ApplicationsMasters( 注意不是 ApplicationMaster)它是监测 ApplicationMaster 的行状况如果出问题会将其在其他机器上重启。 5、Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作目前是一个框架仅仅提供 java 虚拟机内存的隔离 ,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。 官网http://hadoop.apache.org/ 第二部分主要收集整理的内容主要有日志收集系统、消息系统、分布式服务、集群管理、RPC、基础设施、搜索引擎、Iaas和监控管理等大数据开源工具。 日志收集系统 一、Facebook Scribe 贡献者Facebook 简介Scribe是Facebook开源的日志收集系统在Facebook内部已经得到大量的应用。它能够 从各种日志源上收集日志存储到一个中央存储系统可以是NFS分布式文件系统等上以便于进行集中统计分析处理。它为日志的“分布式收集统一处 理”提供了一个可扩展的高容错的方案。当中央存储系统的网络或者机器出现故障时scribe会将日志转存到本地或者另一个位置当中央存储系统恢复 后scribe会将转存的日志重新传输给中央存储系统。其通常与Hadoop结合使用scribe用于向HDFS中push日志而Hadoop通过 MapReduce作业进行定期处理。 Scribe的系统架构 代码托管https://github.com/facebook/scribe 二、Cloudera Flume 贡献者Cloudera 简介Flume是Cloudera提供的一个高可用的高可靠的分布式的海量日志采集、聚合和传输的系统Flume支持在日志系统中定制各类数据发送方用于收集数据同时Flume提供对数据进行简单处理并写到各种数据接受方可定制的能力。 Flume提供了从console控制台、RPCThrift-RPC、text文件、tailUNIX tail、syslogsyslog日志系统支持TCP和UDP等2种模式exec命令执行等数据源上收集数据的能力。 当前Flume有两个版本Flume 0.9X版本的统称Flume-ogFlume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构与Flume-og有很大不同使用时请注意区分。 Cloudera Flume构架 官网http://flume.apache.org/ 三、logstash 简介logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理提供 Web 接口用于查询和统计。他可以对你的日志进行收集、分析并将其存储供以后使用如搜索您可以使用它。说到搜索logstash带有一个web界 面搜索和展示所有日志。 官网http://www.logstash.net/ 四、kibana 简介Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。kibana 也是一个开源和免费的工具他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面。 主页 http://kibana.org/ 代码托管 https://github.com/rashidkpc/Kibana/downloads 消息系统 一、StormMQ 简介MQMessageQueue消息队列产品 StormMQ是一种服务程序。 官网http://stormmq.com/ 二、ZeroMQ 简介这是个类似于Socket的一系列接口他跟Socket的区别是普通的socket是端到端的 1:1的关系而ZMQ却是可以NM 的关系人们对BSD套接字的了解较多的是点对点的连接点对点连接需要显式地建立连接、销毁连接、选择协议TCP/UDP和处理错误等而ZMQ屏 蔽了这些细节让你的网络编程更为简单。ZMQ用于node与node间的通信node可以是主机或者是进程。 引用官方的说法 “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层像框架一样的一个socket library他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是 “成为标准网络协议栈的一部分之后进入Linux内核”。现在还未看到它们的成功。但是它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接 字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。” 官网http://zeromq.org/ 三、RabbitMQ 简介RabbitMQ是一个受欢迎的消息代理通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。本文简单介绍了如何使用 RabbitMQ假定你已经配置好了rabbitmq服务器。 RabbitMQ是用Erlang对于主要的编程语言都有驱动或者客户端。我们这里要用的是Java所以先要获得Java客户端。 像RabbitMQ这样的消息代理可用来模拟不同的场景例如点对点的消息分发或者订阅/推送。我们的程序足够简单有两个基本的组件一个生产者用于产生消息还有一个消费者用来使用产生的消息。 官网https://www.rabbitmq.com/ 四、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进行测试 官网http://activemq.apache.org/ 五、Jafka 贡献者LinkedIn 简介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的客户端支持发送消息和接收消息。 官网http://kafka.apache.org/ 六、Apache Kafka 贡献者LinkedIn 简介Apache Kafka是由Apache软件基金会开发的一个开源消息系统项目由Scala写成。Kafka最初是由LinkedIn开发并于2011年初开源。 2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。 Kafka是一个分布式的、分区的、多复本的日志提交服务。它通过一种独一无二的设计提供了一个消息系统的功能。 Kafka集群可以在一个指定的时间内保持所有发布上来的消息不管这些消息有没有被消费。打个比方如果这个时间设置为两天那么在消息发布的两 天以内这条消息都是可以被消费的但是在两天后这条消息就会被系统丢弃以释放空间。Kafka的性能不会受数据量的大小影响因此保持大量的数据不是 一个问题。 官网http://kafka.apache.org/ 分布式服务 一、ZooKeeper 贡献者Google 简介ZooKeeper是一个分布式的开放源码的分布式应用程序协调服务是Google的Chubby一个开源的实现是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件提供的功能包括配置维护、名字服务、分布式同步、组服务等。 ZooKeeper是以Fast Paxos算法为基础的paxos算法存在活锁的问题即当有多个proposer交错提交时有可能互相排斥导致没有一个proposer能提交成 功而Fast Paxos作了一些优化通过选举产生一个leader只有leader才能提交propose具体算法可见Fast Paxos。因此要想弄懂ZooKeeper首先得对Fast Paxos有所了解。 架构 官网http://zookeeper.apache.org/ RPC Remote Procedure Call Protocol——远程过程调用协议 一、Apache Avro 简介Apache Avro是Hadoop下的一个子项目。它本身既是一个序列化框架同时也实现了RPC的功能。Avro官网描述Avro的特性和功能如下 丰富的数据结构类型快速可压缩的二进制数据形式存储持久数据的文件容器提供远程过程调用RPC简单的动态语言结合功能。 相比于Apache Thrift 和Google的Protocol BuffersApache Avro具有以下特点 支持动态模式。Avro不需要生成代码这有利于搭建通用的数据处理系统同时避免了代码入侵。数据无须加标签。读取数据前Avro能够获取模式定义这使得Avro在数据编码时只需要保留更少的类型信息有利于减少序列化后的数据大小。 官网http://avro.apache.org/ 二、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构架 官网http://thrift.apache.org/ 集群管理 一、Nagios 简介Nagios是一款开源的免费网络监视工具能有效监控Windows、Linux和Unix的主机状态交换机路由器等网络设置打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员在状态恢复后发出正常的邮件或短信通知。 Nagios可运行在Linux/Unix平台之上同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态各种系统问题以及日志等等。 官网http://www.nagios.org/ 二、Ganglia 简介Ganglia是UC Berkeley发起的一个开源集群监视项目设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要 是用来监控系统性能如cpu 、mem、硬盘利用率 I/O负载、网络流量情况等通过曲线很容易见到每个节点的工作状态对合理调整、分配系统资源提高系统整体性能起到重要作用。 官网http://ganglia.sourceforge.net/ 三、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 CoreHDFS和MapReduce及相关项目如HBase、Hive和HCatalog是否健康。支持作业与任务执行的可视化与分析能够更好地查看依赖和性能。通过一个完整的RESTful API把监控信息暴露出来集成了现有的运维工具。用户界面非常直观用户可以轻松有效地查看信息并控制集群。 Ambari使用Ganglia收集度量指标用Nagios支持系统报警当需要引起管理员的关注时比如节点停机或磁盘剩余空间不足等问题系统将向其发送邮件。 此外Ambari能够安装安全的基于KerberosHadoop集群以此实现了对Hadoop 安全的支持提供了基于角色的用户认证、授权和审计功能并为用户管理集成了LDAP和Active Directory。 官网http://ambari.apache.org/ 基础设施 一、LevelDB 贡献者Jeff Dean和Sanjay Ghemawat 简介Leveldb是一个google实现的非常高效的kv数据库目前的版本1.2能够支持billion 级别的数据量了。 在这个数量级别下还有着非常高的性能主要归功于它的良好的设计。特别是LMS算法。LevelDB 是单进程的服务性能非常之高在一台4核Q6600的CPU机器上每秒钟写数据超过40w而随机读的性能每秒钟超过10w。 Leveldb框架 官网http://code.google.com/p/leveldb/ 二、SSTable 简介如果说Protocol Buffer是谷歌独立数据记录的通用语言 那么有序字符串表SSTableSorted String Table则是用于存储处理和数据集交换的最流行的数据输出格式。正如它的名字本身SSTable是有效存储大量键-值对的简单抽象对高吞吐 量顺序读/写进行了优化。 SSTable是Bigtable中至关重要的一块对于LevelDB来说也是如此。 三、RecordIO 贡献者Google 简介我们大家都在用文件来存储数据。文件是存储在磁盘上的。如果在一些不稳定的介质上文件很容损坏。即时文件某个位置出现一点小小的问题整个文件就废了。 下面我来介绍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 compressedPayload, possibly compressed. 详细格式如下图所示 到这里大家可能已经知道recordio之所以能对付坏数据其实就是在这个MagicNumber校验值。 四、Flat Buffers 贡献者Google 简介谷歌开源高效、跨平台的序列化库FlatBuffers。 该库的构建是专门为游戏开发人员的性能需求提供支持它将序列化数据存储在缓存中这些数据既可以存储在文件中又可以通过网络原样传输而不需要任何解析开销。 FlatBuffers有如下一些关键特性—— 访问序列化数据不需要打包/拆包节省内存而且访问速度快——缓存只占用访问数据所需要的内存不需要任何额外的内存。灵活性——通过可选字段向前向后兼容代码规模小强类型——错误在编译时捕获而不是在运行时便利性——生成的C头文件代码简洁。如果需要有一项可选功能可以用来在运行时高效解析Schema和JSON-like格式的文本。跨平台——使用C编写不依赖STL之外的库因此可以用于任何有C编辑器的平台。当前该项目包含构建方法和在Android、Linux、Windows和OSX等操作系统上使用该库的示例。 与Protocol Buffers或JSON Parsing这样的可选方案相比FlatBuffers的优势在于开销更小这主要是由于它没有解析过程。 代码托管https://github.com/google/flatbuffers 五、Protocol Buffers 贡献者Google 简介Protocol Buffers是Google公司开发的一种数据描述语言类似于XML能够将结构化数据序列化可用于数据存储、通信协议等方面。它不依赖于语言和平台 并且可扩展性极强。现阶段官方支持C、JAVA、Python等三种编程语言但可以找到大量的几乎涵盖所有语言的第三方拓展包。 通过它你可以定义你的数据的结构并生成基于各种语言的代码。这些你定义的数据流可以轻松地在传递并不破坏你已有的程序。并且你也可以更新这些数据而现有的程序也不会受到任何的影响。 Protocol Buffers经常被简称为protobuf。 官网http://code.google.com/p/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 贡献者JBOSS 简介Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说Netty 是一个基于NIO的客户服务器端编程框架使用Netty 可以确保你快速和简单的开发出一个网络应用例如实现了某种协议的客户服务端应用。Netty相当简化和流线化了网络应用的编程开发过程例如TCP和UDP的socket服务开发。 “快速”和“简单”并不意味着会让你的最终应用产生维护性或性能上的问题。Netty 是一个吸收了多种协议的实现经验这些协议包括FTP,SMTP,HTTP各种二进制文本协议并经过相当精心设计的项目最终Netty 成功的找到了一种方式在保证易于开发的同时还保证了其应用的性能稳定性和伸缩性。 官网http://netty.io/ 八、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。 官网https://nutch.apache.org/ 二、Lucene 开发者Doug CuttingHadoop之父你懂的 简介Lucene是apache软件基金会4 jakarta项目组的一个子项目是一个开放源代码的全文检索引擎工具包即它不是一个完整的全文检索引擎而是一个全文检索引擎的架构提供了完整的 查询引擎和索引引擎部分文本分析引擎英文与德文两种西方语言。Lucene的目的是为软件开发人员提供一个简单易用的工具包以方便的在目标系统中 实现全文检索的功能或者是以此为基础建立起完整的全文检索引擎。 官网http://lucene.apache.org/ 三、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更为丰富的查询语言同时实现了可配置、可扩展并对查询性能进行了优化并且提供了一个完善的功能管理界面是一款非常优秀的全文搜索引擎。 官网https://lucene.apache.org/solr/ 五、ElasticSearch 简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜 索引擎基于RESTful web接口。Elasticsearch是用Java开发的并作为Apache许可条款下的开放源码发布是第二最流行的企业搜索引擎。设计用于云计算 中能够达到实时搜索稳定可靠快速安装使用方便。 官网http://www.elasticsearch.org/ 六、Sphinx 简介Sphinx是一个基于SQL的全文检索引擎可以结合MySQL,PostgreSQL做全文搜索它 可以提供比数据库本身更专业的搜索功能使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口如 PHP,Python,Perl,Ruby等同时为MySQL也设计了一个存储引擎插件。 Sphinx单一索引最大可包含1亿条记录在1千万条记录情况下的查询速度为0.x秒毫秒级。Sphinx创建索引的速度为创建100万条 记录的索引只需 34分钟创建1000万条记录的索引可以在50分钟内完成而只包含最新10万条记录的增量索引重建一次只需几十秒。 官网http://sphinxsearch.com 七、SenseiDB 贡献者linkedin 简介SenseiDB是一个NoSQL数据库它专注于高更新率以及复杂半结构化搜索查询。熟悉Lucene 和Solor的用户会发现SenseiDB背后有许多似曾相识的概念。SenseiDB部署在多节点集群中其中每个节点可以包括N块数据片。 Apache Zookeeper用于管理节点它能够保持现有配置并可以将任意改动如拓扑修改传输到整个节点群中。SenseiDB集群还需要一种模式用于定义 将要使用的数据模型。 从SenseiDB集群中获取数据的唯一方法是通过Gateways它 没有“INSERT”方法。每个集群都连接到一个单一gateway。你需要了解很重要的一点是由于SenseiDB本身没法处理原子性 Atomicity和隔离性Isolation因此只能通过外部在gateway层进行限制。另外gateway必须确保数据流按照预期的方 式运作。内置的gateway有以下几种形式 来自文件来自JMS队列通过JDBC来自Apache Kafka 官网http://senseidb.com 数据挖掘 一、Mahout 简介Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目其主要目标是创建一些可伸缩的机器学习算法供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头目前只有一个公共发行版。Mahout 包含许多实现包括集群、分类、CP 和进化程序。此外通过使用 Apache Hadoop 库Mahout 可以有效地扩展到云中。 虽然在开源领域中相对较为年轻但 Mahout 已经提供了大量功能特别是在集群和 CF 方面。Mahout 的主要特性包括 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 和矢量库。上述算法的示例。 官网http://mahout.apache.org/ Iaas IaaSInfrastructure as a Service即基础设施即服务。 一、OpenStack 简介OpenStack是一个由NASA美国国家航空航天局和Rackspace合作研发并发起的以Apache许可证授权的自由软件和开放源代码项目。 OpenStack是一个开源的云计算管理平台项目由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境项目目 标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务IaaS的解决方案 每个服务提供API以进行集成。 6个核心项目Nova计算ComputeSwift对象存储ObjectGlance镜 像ImageKeystone身份IdentityHorizon自助门户DashboardQuantum Melange网络地址管理另外还有若干社区项目如Rackspace负载均衡、Rackspace关系型数据库。 相关阅读 什么是OpenStack 成功部署OpenStack的十大要点 官网https://www.openstack.org/ 二、Docker 贡献者dotCloud 简介Docker 是一个开源的应用容器引擎让开发者可以打包他们的应用以及依赖包到一个可移植的容器中然后发布到任何流行的 Linux 机器上也可以实现虚拟化。容器是完全使用沙箱机制相互之间不会有任何接口类似 iPhone 的 app。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。 官网http://www.docker.io/ 三、Kubernetes 贡献者Google 简介Kubernetes是Google开源的容器集群管理系统。它构建Ddocker技术之上为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能本质上可看作是基于容器技术的mini-PaaS平台。 Kubernetes从另一个角度对资源进行抽象它让开发人员和管理人员共同着眼于服务的行为和性能的提升而不是仅仅关注对单一的组件或者是基础资源。 那么Kubernetes集群到底提供了哪些单一容器所没有功能?它主要关注的是对服务级别的控制而并非仅仅是对容器级别的控 制Kubernetes提供了一种“机智”的管理方式它将服务看成一个整体。在Kubernete的解决方案中一个服务甚至可以自我扩展自我诊 断并且容易升级。例如在Google中我们使用机器学习技术来保证每个运行的服务的当前状态都是最高效的。 代码托管https://github.com/GoogleCloudPlatform/kubernetes/ 四、Imctfy 贡献者Google 简介Google开源了自己所用Linux容器系统的开源版本lmctfy读音为lem-kut-fee。包括一个C库使用了C11文档可以参考头文件和命令行界面。目前的版本是0.1只提供了CPU与内存隔离。项目还在密集开发中。 mctfy本身是针对某些特定使用场景设计和实现的目前拥有一台机器上所有容器时运行情况最好不推荐与LXC和其他容器系统一起使用虽然也可行。已在Ubuntu 12.04和Ubuntu 3.3与3.8内核上测试。 代码托管https://github.com/google/Imctfy/ 监控管理 一、Dapper 贡献者Google 简介Dapper是一个轻量的ORM(对象关系映射英语Object Relational Mapping简称ORM或O/RM或O/R mapping。并不单纯的是一个DBHelper.因为在Dapper中数据其实就是一个对象。Dapper扩展与IDbConnection上所 以事实上它的倾入性很低。我用了StructureMap。如果不喜欢可以自己更换或者自己实现下。 代码就一个SqlMapper.cs文件,主要是IDbConnection的扩展方法编译后就40K的一个很小的dll。 特性 Dapper很快。Dapper的速度接近与IDataReader。Dapper支持主流数据库 Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库支持多表并联的对象。支持一对多 多对多的关系并且没侵入性。原理通过Emit反射IDataReader的序列队列来快速的得到和产生对象Dapper语法十分简单。并且无须迁就数据库的设计 官方站点 http://code.google.com/p/dapper-dot-net/ 代码托管http://bigbully.github.io/Dapper-translation/ 二、Zipkin 贡献者Twitter 简介Zipkin 分布式跟踪系统是 Twitter 的一个开源项目允许开发者收集 Twitter 各个服务上的监控数据并提供查询接口。该系统让开发者可通过一个 Web 前端轻松的收集和分析数据例如用户每次请求服务的处理时间等可方便的监测系统中存在的瓶颈。 官方网站http://twitter.github.io/zipkin/ 代码托管https://github.com/twitter/zipkin/ End. 来自36大数据36dsj.com)36大数据 » 一共81个开源大数据处理工具汇总下包括日志收集系统/集群管理/RPC等 ------------- 更多的JavaAngularAndroid大数据J2EEPython数据库LinuxJava架构师 http://www.cnblogs.com/zengmiaogen/p/7083694.html
http://www.zqtcl.cn/news/206184/

相关文章:

  • 怎么测网站流量吗网络运维工程师教程
  • 有谁帮做网站网站建设seo合同书
  • 自己做视频网站只能用地址连接专业网站建设效果
  • 重庆网站建设价格费用酒店协会网站集静态模板
  • 会议专题网站建设报价单网站代码在哪里修改
  • 怎么用net123做网站怎么给企业制作网站
  • 网站建设合同模板网页设计团队
  • 做排行的网站淘宝流量平台
  • 用dw怎么做网站后台做一个网站需要怎么做
  • 沧州地区阿里巴巴做网站修改wordpress标题图片
  • 怎么判断网站开发语言互联网推广模式
  • 做电影网站被找版权问题怎么处理网站做的简单是什么意思
  • 九江网站建设网站制作深圳seo优化服务商
  • 上海网站推广珈维做映射后 内网无法通过域名访问网站
  • 太原网站关键词优化常州企业网站建设公司
  • 网站开发流程详细步骤不用淘宝客api如何做网站
  • xuzhou网站制作wordpress漫画小说
  • 公司建设网站的通知书百度经验官网入口
  • 如何做产品网站的推广静态网页制作总结
  • 网站建设有哪些知识点wordpress 静态
  • 买完阿里云域名如何做网站优化软件排行榜
  • 三五互联网站建设怎么样公司网上推广平台
  • 做网站网页的公司机械网站建设公司推荐
  • 影楼网站制作网站集群建设申请
  • 国内免费的短视频素材网站自己做网站的方法
  • jsp网站建设代码电子印章在线制作生成器免费
  • 叫别人做网站后怎么更改密码一手楼房可以做哪个网站
  • 网站上的图分辨率做多少网站栏目建设存在的问题
  • 山东省建设部网站官网php 开发手机网站建设
  • 新建的网站怎么做seo优化国内最新新闻事件今天