Hadoop演进与Hadoop生态

1.了解对比Hadoop不同版本的特性,可以用图表的形式呈现。

Apache hadoop:Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google档案系统的论文自行实作而成。称为社区版Hadoop。

第三方发行版Hadoop:Hadoop遵从Apache开源协议,用户可以免费地任意使用和修改Hadoop,也正因此,市面上出现了很多Hadoop版本。其中有很多厂家在Apache Hadoop的基础上开发自己的Hadoop产品,比如Cloudera的CDH,Hortonworks的HDP,MapR的MapR产品等

Apache社区版本

优点:
完全开源免费。
社区活跃
文档、资料详实
缺点:
复杂的版本管理。版本管理比较混乱的,各种版本层出不穷,让很多使用者不知所措。
复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下。
复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大。
复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题。

第三方发行版本(如CDH,HDP,MapR等)

优点:
基于Apache协议,100%开源。
版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4,CDH5 等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch。
比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境。
版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。
基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch
提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群。
运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。

 

2.Hadoop生态的组成、每个组件的作用、组件之间的相互关系,以图例加文字描述呈现。

Hadoop生态的组成:

①HBase
Google Bigtable的开源实现
列式数据库
可集群化
可以使用shell、web、api等多种方式访问
适合高读写(insert)的场景
HQL查询语言
NoSQL的典型代表产品
②Hive
数据仓库工具。可以把Hadoop下的原始结构化数据变成Hive中的表
支持一种与SQL几乎完全相同的语言HiveQL。除了不支持更新、索引和事务,几乎SQL的其它特征都能支持
可以看成是从SQL到Map-Reduce的映射器
提供shell、JDBC/ODBC、Thrift、Web等接口
③Zookeeper
Google Chubby的开源实现
用于协调分布式系统上的各种服务。例如确认消息是否准确到达,防止单点失效,处理负载均衡等
应用场景:Hbase,实现Namenode自动切换
工作原理:领导者,跟随者以及选举过程
④Sqoop
用于在Hadoop和关系型数据库之间交换数据
通过JDBC接口连入关系型数据库
⑤Chukwa
架构在Hadoop之上的数据采集与分析框架
主要进行日志采集和分析
通过安装在收集节点的“代理”采集最原始的日志数据
代理将数据发给收集器
收集器定时将数据写入Hadoop集群
指定定时启动的Map-Reduce作业队数据进行加工处理和分析
⑥Pig
Hadoop客户端
使用类似于SQL的面向数据流的语言Pig Latin
Pig Latin可以完成排序,过滤,求和,聚组,关联等操作,可以支持自定义函数
Pig自动把Pig Latin映射为Map-Reduce作业上传到集群运行,减少用户编写Java程序的苦恼
⑦Avro
数据序列化工具,由Hadoop的创始人Doug Cutting主持开发 
用于支持大批量数据交换的应用。支持二进制序列化方式,可以便捷,快速地处理大量数据 
动态语言友好,Avro提供的机制使动态语言可以方便地处理 Avro数据。 
Thrift接口
⑧Cassandra
NoSQL,分布式的Key-Value型数据库,由Facebook贡献
与Hbase类似,也是借鉴Google Bigtable的思想体系
只有顺序写,没有随机写的设计,满足高负荷情形的性能需求

3.官网学习Hadoop的安装与使用,用文档的方式列出步骤与注意事项。

→下载Hadoop安装包http://hadoop.apache.org/

→解压下载的 Hadoop 发行版。在发行版中,编辑文件 etc/Hadoop/Hadoop-env.sh,定义一些参数如下:

# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
→配置非分布式模式,下面的示例复制未打包的 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 到 localhost,执行以下命令:

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
→以下说明将在本地运行 MapReduce 作业。如果你想在纱线上执行任务,请参阅单节点纱线。

格式化文件系统:

$ bin/hdfs namenode -format
启动 NameNode 守护进程和 DataNode 守护进程:

$ sbin/start-dfs.sh
HADOOP 守护进程日志输出被写入 $HADOOP _ log _ dir 目录(默认为 $HADOOP _ home/logs)。

浏览 NameNode 的 web 界面; 默认情况下,它可以在:

NameNode - NameNode-http://localhost:9870/
使执行 MapReduce 作业所需的 HDFS 目录:

$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
将输入文件复制到分布式文件系统:

$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
运行提供的一些例子:

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
检查输出文件: 将输出文件从分布式文件系统复制到本地文件系统,并检查它们:

$ bin/hdfs dfs -get output output
$ cat output/*

查看分布式文件系统上的输出文件:

$ bin/hdfs dfs -cat output/*
完成后,用以下命令停止守护进程:

$ sbin/stop-dfs.sh

→ 单节点纱线

您可以通过设置一些参数并运行 ResourceManager 守护进程和 NodeManager 守护进程,在纱线上以伪分布模式运行 MapReduce 作业。

下面的指令假定已经执行了上面指令的1. ~ 4. 步骤。

配置参数如下:

etc/hadoop/mapred-site. xml:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
etc/hadoop/yarn-site. xml:

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
启动 ResourceManager 守护进程和 NodeManager 守护进程:

$ sbin/start-yarn.sh
浏览网页界面的 ResourceManager; 默认情况下,它可以在:

ResourceManager - 资源经理-http://localhost:8088/
运行 MapReduce 作业。

完成后,用以下命令停止守+护进程:

$ sbin/stop-yarn.sh

posted @ 2020-09-19 21:26  UGOLHB  阅读(117)  评论(0编辑  收藏  举报