作业2
- 了解对比Hadoop不同版本的特性,可以用图表的形式呈现。
(1)Apache Hadoop2.0版本,有以下模块:
Hadoop通用模块,支持其他Hadoop模块的通用工具集;
Hadoop分布式文件系统(HDFS),支持对应用数据高吞吐量访问的分布式文件系统;
Hadoop YARN,用于作业调度和集群资源管理的框架;
Hadoop MapReduce,基于YARN的大数据并行处理系统。
Hadoop目前除了社区版,还有众多厂商的发行版本。
(2)Cloudera:最成型的发行版本,拥有最多的部署案例;提供强大的部署、管理和监控工具。开发并贡献了可实时处理大数据的Impala项目。
(3)Hortonworks:100%开源的Apache Hadoop唯一提供商。Hortonworks是第一家使用了Apache HCatalog的元数据服务特性的提供商。而且,他们的Stinger极大地优化了Hive项目。Hortonworks为人们提供了一个非常好的、易于使用的沙盒。Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Windows Servers和Windows Azure在内的Microsoft Windows平台上本地运行。
(4)MapR:与竞争者相比,它使用了一些不同的概念,特别是为了获取更好的性能和易用性而支持本地UNIX文件系统而不是HDFS(使用非开源的组建)。我们可以使用本地UNIX命令来代替Hadoop命令。除此之外,MapR还凭借如快照、镜像或有状态的故障恢复之类的高可用性特性来与其他竞争者相区别。该公司也领导着Apache Drill项目,本项目是Google的Dremel的开源项目的重新实现,目的是在Hadoop数据上执行类似SQL的查询以提供实时处理。
(5)Amazon Elastic Map Reduce(EMR):区别与其他提供商的是,这是一个托管的解决方案,其运行在由Amazon Elastic Compute Cloud(Amazon EC2)和Amazon Simple Storage Service(Amazon S3)组成的网络规模的基础设施之上。除了Amazon的发行版本之外,也可以在EMR上使用MapR,临时集群是主要的使用情形。如果你需要一次性的或者不常见的大数据处理,EMR可能为你节省大笔开支。然而,这也存在不利之处。其只包含了Hadoop生态系统中的Pig和Hive项目,在默认的情况下不包含很多其他项目。并且,EMR是高度优化成与S3中的数据一起工作的,这种方式会有较高的延时并且不会定位于你的计算节点上的数据。所以处于EMR上的文件IO相比于你自己的Hadoop集群或者你的私有EC2集群来说慢很多,并有更大的延时。
- Hadoop生态的组成、每个组件的作用、组件之间的相互关系,以图例加文字描述呈现。
(1)HDFS(hadoop分布式文件系统)
是hadoop体系中数据存储管理的基础。他是一个高度容错的系统,能检测和应对硬件故障。
client:切分文件,访问HDFS,与那么弄得交互,获取文件位置信息,与DataNode交互,读取和写入数据。
namenode:master节点,在hadoop1.x中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户 端请求。
DataNode:slave节点,存储实际的数据,汇报存储信息给namenode。
secondary namenode:辅助namenode,分担其工作量:定期合并fsimage和fsedits,推送给namenode;紧急情况下和辅助恢复namenode,但其并非namenode的热备。
(2)mapreduce(分布式计算框架)
mapreduce是一种计算模型,用于处理大数据量的计算。其中map对应数据集上的独立元素进行指定的操作,生成键-值对形式中间,reduce则对中间结果中相同的键的所有值进行规约,以得到最终结果。
jobtracker:master节点,只有一个,管理所有作业,任务/作业的监控,错误处理等,将任务分解成一系列任务,并分派给tasktracker。
tacktracker:slave节点,运行 map task和reducetask;并与jobtracker交互,汇报任务状态。
map task:解析每条数据记录,传递给用户编写的map()并执行,将输出结果写入到本地磁盘(如果为map—only作业,则直接写入HDFS)。
reduce task:从map 它深刻地执行结果中,远程读取输入数据,对数据进行排序,将数据分组传递给用户编写的reduce函数执行。
(3)hive(基于hadoop的数据仓库)
由Facebook开源,最初用于解决海量结构化的日志数据统计问题。
hive定于了一种类似sql的查询语言(hql)将sql转化为mapreduce任务在hadoop上执行。
(4)hbase(分布式列存数据库)
hbase是一个针对结构化数据的可伸缩,高可靠,高性能,分布式和面向列的动态模式数据库。和传统关系型数据库不同,hbase采用了bigtable的数据模型:增强了稀疏排序映射表(key/value)。其中,键由行关键字,列关键字和时间戳构成,hbase提供了对大规模数据的随机,实时读写访问,同时,hbase中保存的数据可以使用mapreduce来处理,它将数据存储和并行计算完美结合在一起。
(5)zookeeper(分布式协作服务)
解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。
(6)sqoop(数据同步工具)
sqoop是sql-to-hadoop的缩写,主要用于传统数据库和hadoop之间传输数据。
数据的导入和导出本质上是mapreduce程序,充分利用了MR的并行化和容错性。
(7)pig(基于hadoop的数据流系统)
定义了一种数据流语言-pig latin,将脚本转换为mapreduce任务在hadoop上执行。
通常用于离线分析。
(8)mahout(数据挖掘算法库)
mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建只能应用程序。mahout现在已经包含了聚类,分类,推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法是,mahout还包含了数据的输入/输出工具,与其他存储系统(如数据库,mongoDB或Cassandra)集成等数据挖掘支持架构。
(9)flume(日志收集工具)
cloudera开源的日志收集系统,具有分布式,高可靠,高容错,易于定制和扩展的特点。他将数据从产生,传输,处理并写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在flume中定制数据发送方,从而支持收集各种不同协议数据。
(10)资源管理器的简单介绍(YARN和mesos)
随着互联网的高速发展,基于数据 密集型应用 的计算框架不断出现,从支持离线处理的mapreduce,到支持在线处理的storm,从迭代式计算框架到 流式处理框架s4,...,在大部分互联网公司中,这几种框架可能都会采用,比如对于搜索引擎公司,可能的技术方法如下:网页建索引采用mapreduce框架,自然语言处理/数据挖掘采用spark,对性能要求到的数据挖掘算法用mpi等。公司一般将所有的这些框架部署到一个公共的集群中,让它们共享集群的资源,并对资源进行统一使用,这样便诞生了资源统一管理与调度平台,典型的代表是mesos和yarn。
-
官网学习Hadoop的安装与使用,用文档的方式列出步骤与注意事项。
1.关闭防火墙
firewall-cmd --state 显示防火墙状态running/not running
systemctl stop firewalld 临时关闭防火墙,每次开机重新开启防火墙
systemctl disable firewalld 禁止防火墙服务。
2.传输JDK和HADOOP压缩包
SecureCRT 【File】→【Connect SFTP Session】开启sftp操作
put jdk-8u121-linux-x64.tar.gz
put hadoop-2.7.3.tar.gz
传输文件从本地当前路径(Windows)到当前路径(Linux)3.解压JDK、HADOOP
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/module 解压安装
tar -zxvf hadoop-2.7.3.tar.gz -C /opt/module 解压安装mkdir module
4.配置JDK并生效
vi /etc/profile文件添加:
export JAVA_HOME=/opt/module/jdk1.8.0_121
export PATH=J A V A H O M E / b i n : JAVA_HOME/bin:JAVAHOME/bin:PATH
Esc :wq!保存并退出。不需要配置CLASSPATH。
source /etc/profile配置生效
运行命令javac,检验是否成功。5.配置HADOOP并生效
vi /etc/profile文件添加:
export HADOOP_HOME=/opt/module/hadoop-2.7.3
export PATH=H A D O O P H O M E / b i n : HADOOP_HOME/bin:HADOOPHOME/bin:HADOOP_HOME/sbin:$PATH
Esc :wq!保存并退出。
source /etc/profile配置生效
运行命令hadoop,检验是否成功。5.单机模式配置hadoop -env.sh
vi /opt/module/hadoop-2.7.3/etc/hadoop/hadoop-env.sh文件修改
显示行号 Esc :set number 取消行号Esc :set nonumber
修改第25行export JAVA_HOME=/opt/module/jdk1.8.0_121
Esc :wq!保存并退出
本地模式没有HDFS和Yarn,配置JDK后MapReduce能够运行java程序。
6.Hadoop的伪分布式模式
对文件进行修改
格式化:
hdfs namenode -format (如果不是第一次格式化,格式化之前先删除/opt/module/hadoop-2.7.3/下面的tmp、logs两个目录)
启动:cd /root/hadoop-2.7.3/tmp/dfs
start-all.sh (如果启动之前已经启动过,启动之前先停止stop-all.sh)(启动记得关闭防火墙)
查看伪分布式配置是否成功:
①执行ll,查看/opt/module/hadoop-2.7.3/tmp/dfs目录,如下图所示,则正确。
②执行jps,如下图所示,NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager如果全部启动,伪分布式配置成功。③web控制台访问:http://192.168.163.132:50070 、http://192.168.163.132:8088
页面正常显示,则成功。
五、运行wordcount
hdfs dfs -put in.txt /adir 上传本地当前路径下的in.txt文件 到hdfs的/adir目录下。
运行hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /adir/in.txt output/。
在http://192.168.163.132:50070 查看/user/root/output/part-r-00000文件里的词频统计结果。 - 评估华为hadoop发行版本的特点与可用性。
华为的hadoop版本基于自研的Hadoop HA平台,构建NameNode、JobTracker、HiveServer的HA功能,进程故障后系统自动Failover,无需人工干预,这个也是对hadoop的小修补,远不如mapR解决的彻底。
![]()


浙公网安备 33010602011771号