第二次作业 Hadoop演进与Hadoop生态
1、了解对比Hadoop不同版本的特性,可以用图表的形式呈现。
目前Hadoop的发行版除了Apache的开源版本之外,还有华为发行版、Intel发行版、Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等,所有这些发行版均是基于Apache Hadoop衍生出来的,因为Apache Hadoop的开源协议允许任何人对其进行修改并作为开源或者商业产品发布。国内大多数公司发行版是收费的,比如Intel发行版、华为发行版等。不收费的Hadoop版本主要有国外的四个,分别是Apache hadoop、Cloudera版本(CDH)、Hortonworks版本(HDP)、MapR版本。
Cloudera发行版:Cloudera公司的发行版,市场上称之为CDH,目前较常用的是CDH3以上的版本,版本层次明确,代码也是完全开源,并且集群部署工具比较完善以及教程等相对较多,社区活跃。
Apache hadoop:Apache Hadoop是apache提供的官方版本,以yarn框架的出现为标志分为Hadoop第一代和Hadoop第二代,第二代Hadoop跟第一代相比有了明显的不同,包含了HDFS Federation和YARN系统。第三代最新版本包含HDFS erasure编码,YARN Timeline Service版本2的预览,YARN资源类型以及云存储系统周围的改进功能和性能增强,包括Hadoop Common,用于支持其他Hadoop模块,Hadoop分布式文件系统,Hadoop YARN和Hadoop MapReduce。
Hortonworks发行版:Hortonworks提供的hadoop发行版称为HDP,也是全开源的系统。HDP除了包含常见的项目外还包含了Ambari,一款开源的安装和管理系统。一个元数据管理系统HCatlog,还包含HBase、Hive、Pig等一整套大数据解决方案技术。Hortonworks在管理工具和集群部署方面有其独特优势。
华为发行版:华为在Apache Hadoop的基础上利用本身的硬件能力进行了一些增强,例如故障自动Failover,增强HA功能等,其发布的版本为FusionInsight Hadoop。
2、Hadoop生态的组成、每个组件的作用、组件之间的相互关系,以图例加文字描述呈现。
Hadoop生态系统不断完善和成熟,目前已经包含了多个子项目。除了核心的HDFS和MapReduce以外,Hadoop生态系统还包括Zookeeper、HBase、Hive、Pig、Mahout、Sqoop、Flume、Ambari等功能组件。Hadoop2.0中新增了HDFS HA和分布式资源调度管理框架YARN等。
HDFS:HDSF是Hadoop项目的两大核心之一。HDFS具有处理超大数据、流式处理、可以运行在廉价商用服务器上等优点。HDFS放宽了一部分POSIX约束,从而实现以流的形式访问文件系统中的数据。HDFS在访问应用程序数据时,可以具有很高的吞吐率,因此对于超大数据集的应用程序而言,选择HDFS作为底层数据存储是较好的选择。
HBase:HBase是一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,一般采用HDFS作为其底层数据存储。HBase和传统关系数据库的一个重要区别是,前者采用基于列的存储,而后者采用基于行的存储。HBase具有良好的横向扩展能力,可以通过不断增加廉价的商用服务器来增加存储能力。
MapReduce:MapReduce是一种编程模型,用于大规模数据集的并行运算,它将复杂的、运行于大规模集群上的并行计算过程高度地抽象到两个函数——Map和Reduce上,并且允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,并将其运行于廉价计算机集群上,完成海量的数据的处理。
Hive:Hive是一个基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。Hive自身可以将Hive QL语句转换为MapReduce任务进行运行,而不必开发专门的MapReduce应用,因而十分适合数据仓库的统计分析。
Pig:Pig是一种数据流语言和运行环境,适用于使用Hadoop和MapReduce平台来查询大型半结构化数据集。
Mahout:Mahout提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。通过使用Apache Hadoop库,Mahout可以有效地扩展到云中。
Zookeeper:Zookeeper是一个高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。
Flume:Flume是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据。同时,Flume提供对数据进行简单处理,并写到各种数据接受方的能力。
Sqoop:Sqoop主要用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性。通过Sqoop可以方便地将数据从MySQL、Oracle、PostgreSQL等关系数据库中导入Hadoop,或者将数据从Hadoop导出到关系数据库,使得传统关系数据库和Hadoop之间的数据迁移变得非常方便。
Ambari:Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop等。
3、官网学习Hadoop的安装与使用,用文档的方式列出步骤与注意事项。
安装步骤:首先需要Linux作为安装平台。
第一步,下载HadoopJavaVersions所描述的java版本;
第二步,安装软件,在Ubuntu Linux上:
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
第三步,下载需要安装的Hadoop发行版本,最好在官网下载稳定版本,
第四步,准备启动Hadoop集群:
解压缩下载的Hadoop发行版。在发行版中,编辑文件etc / hadoop / hadoop-env.sh以定义一些参数,如下所示:
#设置为Java安装的根目录
export JAVA_HOME = / usr / java / latest
尝试以下命令:
$ bin / hadoop
这将显示hadoop脚本的用法文档。
现在,您可以以三种支持的模式之一启动Hadoop集群:
本地独立模式
伪分布式模式
全分布式模式
第五步,独立运行:
默认情况下,Hadoop被配置为在非分布式模式下作为单个Java进程运行。这对于调试很有用。
下面的示例复制解压缩的conf目录以用作输入,然后查找并显示给定正则表达式的每个匹配项。输出被写入给定的输出目录。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
$ cat output/*
第六步,伪分式操作
组态:使用以下内容:
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
设置无密码SSH:
现在检查您是否可以在不使用密码的情况下SSH到本地主机:
$ ssh localhost
如果没有密码就无法SSH到本地主机,请执行以下命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
第七步,全分布式运行。
4、评估华为hadoop发行版本的特点与可用性。
华为Hadoop可运行在任意标准的x86服务器上,无需任何专用的硬件或存储。并针对用户的需求打造了高可靠、高安全、易使用的运行维护系统和全量数据建模中间件,让企业可以更加方便地从海量数据中发现价值。