1.HDFS:Hadoop分布式文件系统被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。这个项目的地址是http://hadoop.apache.org/core/。
2.HBase:HBase是一个分布式的、非关系型开源数据库。 HBase有如下几个特点: HBase是No-SQL的一个典型实现,提升了系统的可扩展性; HBase支持线性水平扩展,极大提升了系统的可伸缩性和运算能力; HBase和Google的BigTable有异曲同工之妙,底层也是建立在HDFS(Hadoop分布式文件系统)之上,可以搭建在廉价的PC机集群上。
NoSQL(NoSQL = Not Only SQL),意思是不仅仅是SQL的扩展,一般指的是非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,传统的电信行业动辍就千万甚至上亿的数据,甚至有客户提出需要存储相关的日志数据50年以上,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
关系型数据库难以克服的问题:
l 不能很好处理对数据库高并发读写的需求;
l 不能很好处理对海量数据的高效率存储和访问的需求;
l 不能很好处理对数据库的高可扩展性和高可用性的需求。
SQL语言和关系型数据库(MySQL、PostgreSQL、Oracle等)是通用的数据解决方案,占有绝大多数的市场。但是就像上面提到的,它有很多难以解决的问题。不过在最近兴起的NoSQL运动中,涌现出一批具备高可用性、支持线性扩展、支持Map/Reduce操作等特性的数据产品比如MongoDB、CouchDB、Hbase等,它们具有如下特性:
l 频繁的写入操作、相对较少的读取统计信息的操作;
l 海量数据(如数据仓库中需要分析的数据)适合存储在一个结构松散、分布式的文件存储系统中;
l 存储二进制文件(如mp3或者pdf文档)并且能够直接为用户的浏览器提供下载功能。
使用这些非关系数据库并不是要取代原有的关系数据库,而是为不同的应用场景提供更多的选择。也就是说,在一些特定的情况下如果是关系型的数据库解决不了的问题,那么就可以考虑使用nosql,而不是说完全将应用移植到nosql上,毕竟适合才是最好的。
3.Hive:是一个建立在Hadoop架构之上的数据仓库。它能够提供数据的精炼,查询和分析。Apache Hive起初由Facebook开发,目前也有其他公司使用和开发Apache Hive,例如Netflix等。亚马逊公司也开发了一个定制版本的Apache Hive,亚马逊网络服务包中的Amazon Elastic MapReduce包含了该定制版本。
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
4.Oozie:
(1)Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
(2)Oozie的工作流是一系列动作的直接周期图。
(3)Oozie协调作业就是通过时间(频率)和有效数据触发当前的Oozie工作流程。
(4)Oozie是Yahoo针对Apache Hadoop开发的一个开源工作流引擎。用于管理和协调运行在Hadoop平台上(包括:HDFS、Pig和MapReduce)的Jobs。Oozie是专为雅虎的全球大规模复杂工作流程和数据管道而设计。
(5)Oozie围绕着两个核心进行:工作流(Workflow)和协调器(Coordinator),前者定义任务拓扑和执行逻辑,后者负责工作流的依赖和触发。
5.Hue:是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的。通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job等等。很早以前就听说过Hue的便利与强大,一直没能亲自尝试使用,下面先通过官网给出的特性,通过翻译原文简单了解一下Hue所支持的功能特性集合:
(1)默认基于轻量级sqlite数据库管理会话数据,用户认证和授权,可以自定义为MySQL、Postgresql,以及Oracle
(2)基于文件浏览器(File Browser)访问HDFS
(3)基于Hive编辑器来开发和运行Hive查询
(4)支持基于Solr进行搜索的应用,并提供可视化的数据视图,以及仪表板(Dashboard)
(5)支持基于Impala的应用进行交互式查询
(6)支持Spark编辑器和仪表板(Dashboard)
(7)支持Pig编辑器,并能够提交脚本任务
(8)支持Oozie编辑器,可以通过仪表板提交和监控Workflow、Coordinator和Bundle
(9)支持HBase浏览器,能够可视化数据、查询数据、修改HBase表
(10)支持Metastore浏览器,可以访问Hive的元数据,以及HCatalog
(11)支持Job浏览器,能够访问MapReduce Job(MR1/MR2-YARN)
(12)支持Job设计器,能够创建MapReduce/Streaming/Java Job
(13)支持Sqoop 2编辑器和仪表板(Dashboard)
(14)支持ZooKeeper浏览器和编辑器
(15)支持MySql、PostGresql、Sqlite和Oracle数据库查询编辑器
6.Impala:是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。
7.Key-Value Indexer:HBase是一个列存数据库,每行数据只有一个主键RowKey,无法依据指定列的数据进行检索。查询时需要通过RowKey进行检索,然后查看指定列的数据是什么,效率低下。在实际应用中,我们经常需要根据指定列进行检索,或者几个列进行组合检索,这就提出了建立 HBase 二级索引的需求。Key-Value Indexer使用的是Lily Hbase NRT Indexer服务,Lily HBase Indexer是一款灵活的、可扩展的、高容错的、事务性的,并且近实时的处理hbase列索引数据的分布式服务软件。它是NGDATA公司开发的Lily系统的一部分,已开放源代码。Lily HBase Indexer使用SolrCloud来存储HBase的索引数据,当HBase执行写入、更新或删除操作时,Indexer通过HBase的replication功能来把这些操作抽象成一系列的Event事件,并用来保证写入Solr中的HBase索引数据的一致性。并且Indexer支持用户自定义的抽取,转换规则来索引HBase列数据。Solr搜索结果会包含用户自定义的columnfamily:qualifier字段结果,这样应用程序就可以直接访问HBase的列数据。而且Indexer索引和搜索不会影响HBase运行的稳定性和HBase数据写入的吞吐量,因为索引和搜索过程是完全分开并且异步的。
8.YARN (MR2 Included):下一代 Hadoop 计算平台,以下名称的改动有助于更好地了解 YARN 的设计:
(1)ResourceManager 代替集群管理器
(2)ApplicationMaster 代替一个专用且短暂的 JobTracker
(3)NodeManager 代替 TaskTracker
(4)一个分布式应用程序代替一个 MapReduce 作业
9.Cloudera Manager:核心是Cloudera Manager Server。Server托管Admin Console Web Server和应用程序逻辑。它负责安装软件、配置、启动和停止服务以及管理运行服务的群集。解释:
(1)Agent:安装在每台主机上。它负责启动和停止进程,解压缩配置,触发安装和监控主机
(2)Database:存储配置和监控信息
(3)Cloudera Repository:可供Cloudera Manager分配的软件的存储库(repo库)
(4)Client:用于与服务器进行交互的接口:
(5)Admin Console:管理员控制台
(6)API:开发人员使用 API可以创建自定义的Cloudera Manager应用程序
(7)Cloudera Management Service:
a、Cloudera Management Service 可作为一组角色实施各种管理功能
b、Activity Monitor:收集有关服务运行的活动的信息
c、Host Monitor:收集有关主机的运行状况和指标信息
d、Service Monitor:收集有关服务的运行状况和指标信息
f、Event Server:聚合组件的事件并将其用于警报和搜索
g、Alert Publisher :为特定类型的事件生成和提供警报
h、Reports Manager:生成图表报告,它提供用户、用户组的目录的磁盘使用率、磁盘、io等历史视图