一、Hadoop简介
Hadoop主要由HDFS和MapReduce组成,是第一代成熟的大数据技术框架及解决方案。HDFC主要是负责文件存储管理,是一个高容错性的系统,能提供高吞吐量的数据访问。MapReduce是第一代大数据计算引擎。Hadoop以比较完整的生态系统而文明,对其他大数据技术兼容性很好。如Hive为hadoop提供SQL\MR编译、Hbaxxxxse提供列簇的分布式NoSQL、Zookeeper提供分布式协同调度、Flume提供数据流收集等等。

二、Hive简介
1.hive是基于Hadoop的一个工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合的统计分析。
Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据
提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式

三、ZooKeeper简介
1、ZooKeeper是什么?
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集的管理者,监视着集中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户

2、ZooKeeper提供了什么?
(1)文件系统
(2)通知机制

3、Zookeeper文件系统
每个子目录项如 NameService 都被称作为znode,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。

四、Redis简介
1、redis是什么?
  Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。一般项目都可以使用它。
2、Redis和同类产品的比较
  根据Redis的简介,Redis可用作数据库,高速缓存和消息队列代理,那么当你打算使用它们这些功能的时候,可以考虑一下与其他产品的对比,选出一个更好用的。
2.1 做为数据库与之比较
  Redis是可以做为数据库来使用的,它可以看做一个key/value型数据库,因为Redis会根据配置定时将内存中的数据写入到硬盘中,这样即便重启以后依然可以恢复,但是有几个缺点需要考虑一下:
Redis只能存储key/value类型,虽然value的类型可以有多种,但是对于关联性的记录查询,没有Oracle/Mysql方便。
Redis内存数据写入硬盘有一定的时间间隔,在这个间隔内数据可能会丢失,虽然后续会介绍各种模式来保证数据丢失的可能性,但是依然会有可能,所以对数据有严格要求的不建议使用Redis做为数据库。
2.2 做为高速缓存与之比较
  我觉得Redis的本职工作还是高速缓存,同样可以做为缓存的有Ehcache、Memcached 。有一篇博客介绍的很详细:blog.csdn/jationxiaozi/article/details/8509732。我就简单总结一下,只说它们最大的特点,读取速度不再考虑范围之内,毕竟能作为相互比较的缓存工具,速度不会差的太多,只列出较为突出的优点和缺点,列出来表示其他没有:
Ehcache:是一个Java开源项目,使用的方式就是引入一个jar包,非常方便。
Memcached: 如果开启多线程模式,读取速度将有极大的提高,数据只会存储在内存中,挂掉后数据不可恢复。
Redis: 数据结构非常丰富,字符串、hash列表、list、Set等等。支持主从,Sentinal,分
片等多种高级特性,用于负载均衡和容灾,具有高可用性。几乎支持所有语言的客户端,根据需求选择最合适的。
2.3 做为消息队列与之比较
  Redis也是可以做为消息队列的,与之相同功能比较优秀的就是Kafka,简单比较如下:
  1、Redis
  只能说具备发布订阅功能,一个或多个消费者订阅一个频道。
  2、Kafka
  高级特性一应俱全,集、负载均衡、动态扩容、数据备份等。
这么说,如果能用Kafka就用Kafka,对于数据不敏感的一般场景也是可以应用Redis的。

五、Flume简介
  Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目,Flume支持在日志系统中定制各类数据发送方,用于收集数据。
1、工作方式
  Flume-og采用了多Master的方式。为了保证配置数据的一致性,Flume引入了ZooKeeper,用于保存配置数据,ZooKeeper本身可保证配置数据的一致性和高可用,另外,在配置数据发生变化时,ZooKeeper可以通知Flume Master节点。Flume Master间使用gossip协议同步数据。
Flume-ng最明显的改动就是取消了集中管理配置的 Master 和 Zookeeper,变为一个纯粹的传输工具。Flume-ng另一个主要的不同点是读入数据和写出数据现在由不同的工作线程处理(称为 Runner)。 在 Flume-og 中,读入线程同样做写出工作(除了故障重试)。如果写出慢的话(不是完全失败),它将阻塞 Flume 接收数据的能力。这种异步的设计使读入线程可以顺畅的工作而无需关注下游的任何问题。
2、优势
1. Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFSHbaxxxxse
2. 当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供平稳的数据.
3. 提供上下文路由特征
4. Flume的管道是基于事务,保证了数据在传送和接收时的一致性.
5. Flume是可靠的,容错性高的,可升级的,易管理的并且可定制的。
3、具有特征
redis支持的五种数据类型1. Flume可以高效率的将多个网站服务器中收集的日志信息存入HDFS/Hbaxxxxse中
2. 使用Flume,我们可以将从多个服务器中获取的数据迅速的移交给Hadoop中
3. 除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数据,比如facebooktwitter电商网站如亚马逊,flipkart等
4. 支持各种接入资源数据的类型以及接出数据类型
5. 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等
6. 可以被水平扩展
4、结构
Agent主要由:sourcechannelsink三个组件组成.
Source:
从数据发生器接收数据并将接收的数据以Flume的event格式传递给一个或者多个通道channelFlume提供多种数据接收的方式比如AvroThrifttwitter1%等
Channel:
channel是一种短暂的存储容器它将从source处接收到的event格式的数据缓存起来直到它们被sinks消费掉它在source和sink间起着一共桥梁的作用channal是一个完整的事务这一点
保证了数据在收发的时候的一致性. 并且它可以和任意数量的source和sink链接. 支持的类型有: JDBC channel File System channel Memort channel等.
sink:
sink将数据存储到集中存储器比如Hbaxxxxse和HDFS它从channals消费数据(events)并将其传递给目标地. 目标地可能是另一个sink也可能HDFSHbaxxxxse.

六、Spark简介
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms Machines and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

七、Storm简介
Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无
限的数据流,像Hadoop批量处理大数据一样,Storm可以实时处理数据。Storm简单,可以使用任何编程语言。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。