Hadoop云计算平台搭建最详细过程共.docx
《Hadoop云计算平台搭建最详细过程共.docx》由会员分享,可在线阅读,更多相关《Hadoop云计算平台搭建最详细过程共.docx(13页珍藏版)》请在冰点文库上搜索。
Hadoop云计算平台搭建最详细过程共
Hadoop云计算平台及相关组件搭建安装过程详细教程
——Hbase+Pig+Hive+Zookeeper+Ganglia+Chukwa+Eclipse等
一.安装环境简介
根据官网,Hadoop已在linux主机组成的集群系统上得到验证,而windows平台是作为开发平台支持的,由于分布式操作尚未在windows平台上充分测试,所以还不作为一个生产平台。
Windows下还需要安装Cygwin,Cygwin是在windows平台上运行的UNIX模拟环境,提供上述软件之外的shell支持。
实际条件下在windows系统下进行Hadoop伪分布式安装时,出现了许多未知问题。
在linux系统下安装,以伪分布式进行测试,然后再进行完全分布式的实验环境部署。
Hadoop完全分布模式的网络拓补图如图六所示:
(1)网络拓补图如六所示:
图六完全分布式网络拓补图
(2)硬件要求:
搭建完全分布式环境需要若干计算机集群,Master和Slaves
处理器、内存、硬盘等参数要求根据情况而定。
(3)软件要求
操作系统64位版本:
NO.
Project
Version
Content
1
Hardwareenvironment
CPU:
Disk:
150GB
Memory:
Master/NameNodeIP
Slave1/DataNodeIP
Slave2/DataNodeIP
2
Operationsystem
64-bit
3
JDK
/usr/bin/jvm
4
Hadoop
/home/majiangbo/
(可选)
并且所有机器均需配置SSH免密码登录。
二.Hadoop集群安装部署
目前,这里只搭建了一个由三台机器组成的小集群,在一个hadoop集群中有以下角色:
Master和Slave、JobTracker和TaskTracker、NameNode和DataNode。
下面为这三台机器分配IP地址以及相应的角色:
——master,namenode,jobtracker——master(主机名)
——slave,datanode,tasktracker——slave1(主机名)
——slave,datanode,tasktracker——slave2(主机名)
实验环境搭建平台如图七所示:
图七hadoop集群实验平台
并且,Hadoop要求集群上每台的用户账户名和密码相同。
具体安装步骤如下:
1.下载和安装JDK,版本为
(1)JDK的安装目录为/usr/lib/jvm,创建此文件夹,在终端输入命令:
mkdir/usr/lib/jvm
(2)权限不够的话重新改下用户密码就可以了,命令:
sudopasswd,之后重新输入密码。
(3)移动jdk到/usr/lib/jvm,并解压,然后为了节省空间删除安装包。
命令:
mvjdk/usr/lib/jvm
tar–zxvfjdk
rm–rfjdk
2.配置环境变量
在终端输入命令:
sudogedit/etc/profile
打开profile文件,在文件最下面输入如下内容,如图八所示:
图八JAVA环境变量设置
即为:
#setjavaenvironment
exportJAVA_HOME=/usr/lib/jvm
exportCLASSPATH=”.:
$JAVA_HOME/lib:
$CLASSPATH”
exportPATH=”$JAVA_HOME/:
$PATH”
这一步的意义是配置环境变量,使系统可以找到jdk。
3.验证JDK是否安装成功
(1)输入命令:
java–version,如图九所示。
如果出现java版本信息,说明当前安装的jdk并未设置成ubuntu系统默认的jdk,接下来还需要手动将安装的jdk设置成系统默认的jdk。
图九java版本信息
(2)手动设置需输入以下命令:
sudoupdate-alternatives–install/usr/bin/javajava/usr/lib/jvm300
sudoupdate-alternatives–install/usr/bin/javacjavac/usr/lib/jvmjavac300
sudoupdate-alternatives–configjava
然后输入java–version就可以看到所安装的jdk的版本信息。
4.三台主机上分别设置/etc/hosts和/etc/hostname
Hosts这个文件用于定义主机名和IP地址之间的对应关系,而hostname这个文件用于定义你的Ubuntu的主机名。
(1)修改/etc/hosts,命令sudogedit/etc/hosts
localhost
master
slave1
slave2
(2)修改/etc/hostname,命令sudogedit/etc/hostname(修改完重启有效)
master
以及slave1,slave2
5.在这两台主机上安装OpenSSH,并配置SSH可以免密码登录
(1)确认已经连接上网,输入命令:
sudoapt-getinstallssh
(2)配置为可以免密码登录本机,接下来输入命令:
ssh-keygen–tdsa–P‘’–f~/.ssh/id_dsa
解释一下,ssh-keygen代表生成密匙,-t表示指定生成的密匙类型,dsa是密匙认证的意思,即密匙类型,-P用于提供密语,-f指定生成的密匙文件。
这个命令会在.ssh文件夹下创建id_dsa以及两个文件,这是ssh一对私匙和公匙,把追加到授权的key中。
输入命令:
cat~/.ssh/>>~/.ssh/authorized_keys
(3)验证ssh是否已经安装成功,输入命令:
ssh–version。
将文件复制到slave主机相同的文件夹内,输入命令:
scpauthorized_keysslave1:
~/.ssh/
scpauthorized_keysslave2:
~/.ssh/
(4)看是否可以从master主机免密码登录slave,输入命令:
sshslave1
sshslave2
6.配置两台主机的Hadoop文件
首先到Hadoop的官网下载包,默认讲Hadoop解压到/home/u(你的Ubuntu用户名)/目录下
(1)进入hadoop内的conf文件夹,找到,修改:
exportJAVA_HOME=/usr/lib/jvm,指定JDK的安装位置,如图十所示:
图十JAVA_HOME路径设置
(2)修改,这是Hadoop的核心配置文件,这里配置的是HDFS的地址及端号:
/tmp
(3)修改
2
(4)修改
master:
9001
(5)修改conf/masters
master
(6)修改conf/slaves
slave1
slave2
7.启动hadoop
在启动之前,需要格式化hadoop的文件系统HDFS,进入hadoop文件夹,输入命令格式化:
bin/hadoopnamenode–format,如图十一所示:
图十一hadoop格式化
输入命令,启动所有进程:
bin/,如图十二所示:
图十二hadoop启动信息
查看是否所有进程启动,输入命令:
jps,如图十三所示:
图十三jps查看进程
8.最后验证hadoop是否成功启动
打开浏览器,查看机器集群状态分别输入网址:
(1)输入,如图十四,可看到:
图十四namenode状态
点击livenodes,可以看到当前slave1和slave2两个节点信息,如图十五:
图十五datanode节点状态
(2)输入,如图十六,可看到:
图十六jobtracker状态
点击2nodes查看tasktracker信息,如图十七:
图十七tasktracker状态
(3)输入,如图十八,可看到:
图十八task状态
也可以通过命令:
hadoopdfsadmin–report查看
9.停止hadoop进程:
bin/
如图十九:
图十九停止hadoop集群
10.以上为hadoop完全分布式集群配置
以上过程为由三台计算机组成的完全分布式Hadoop集群,主要参考《Hadoop实战-第二版》和《Hadoop权威指南》,主要讲解了Hadoop的安装和配置过程,关于更多Hadoop原理的知识不在详述,如果在家在安装的时候遇到问题,或者按以上步骤安装完成却不能运行Hadoop,建议查看Hadoop的日志信息,Hadoop记录了详尽的日志信息,日志文件保存的Hadoop/logs文件夹内。
三.其他组件安装过程简介
本Hadoop平台搭建过程中安装的组件及软件环境主要包括以下内容:
NO.
Project
Version
Content
1
Hardwareenvironment
CPU:
Disk:
150GB
Memory:
Master/NameNodeIP
Slave1/DataNodeIP
Slave2/DataNodeIP
2
Operationsystem
64-bit
3
JDK
/usr/bin/jvm
4
Hadoop
/home/majiangbo/
(可选)
相关技术作以下介绍:
1.Pig和Hive
Hive是一个基于Hadoop文件系统之上的数据仓库架构,利用Mapreduce编程技术,实现了部分SQL语句,提供了类SQL的编程接口,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能可以将SQL语句转换为Mapreduce任务进行运行,但是这样在执行时会出现延迟现象,但能更好的处理不变的大规模数据集上的批量任务。
此外,Hive的网络接口可以方便直观地对数据进行操作,在命令行下,要执行多个查询就要打开多个终端,而通过网络结构可以同时执行多个查询。
配置Eclipse环境编写Hive程序
Hive的优化策略,针对不同的查询进行优化,优化过程通过配置进行控制
图二十HiveWeb接口界面
Pig提供了一个支持大规模数据分析的平台,Pig的基础结构层包括一个产生Mapreduce程序的编译器,能够承受大量的并行任务。
PigLatin语言更侧重于对数据的查询和分析,而不是对数据进行修改和删除,建立在Hadoop分布式平台之上,能够在短时间内处理海量的数据,比如:
系统日志文件,处理大型数据库文件,处理特定web数据等。
2.Ganglia
Ganglia是UCBerkeley发起的一个开源集群监视项目,用于测量数以千计的节点集群。
核心包含两个Daemon:
客户端GangliaMonitoring(gmond)和服务端GangliaMeta(gmetad),以及一个web前端,主要监控的系统性能有:
CPU、memory、硬盘利用率、I/O负载、网络流量情况等,可以帮助合理调整分配系统资源,优化系统性。
图二十一Ganglia监控总界面
图二十二Ganglia-cpu监控界面
图二十三Ganglia-clustercpu监控界面
图二十四Ganglia-memory监控界面
图二十五Ganglia-network监控界面
3.HBase
简单地说,hbase是一个分布式的、面向列的开源数据库,不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。
Hbase的核心是将数据抽象成表,表中只有rowkey和columnfamily,rowkey记录的是主键,通过key/value很容易找到,column存储实际的数据。
→→
图二十六HBase架构
4.Mahout
Mahout是Apache的一个开源的项目,基于Hadoop平台设计和开发的算法工具库。
提供一些经典的机器学习算法,包含聚类、分类、推荐引擎、频繁子项挖掘。
ApacheMahout主要包括以下部分:
频繁模式挖掘:
挖掘数据中频繁出现的项集;
聚类:
将诸如文本、文档之类的数据分成局部相关的组;
分类:
利用已经存在的分类文档训练分类器,对未分类的文档进行分离;
推荐引擎(协同过滤):
获得用户的行为并从中发现用户可能喜欢的事物;
频繁子项挖掘:
利用一个项集(查询记录或购物记录)去识别经常一起出现的项目。
Mahout的主要目标是建立可伸缩的机器学习算法,这种可伸缩性是针对大规模的数据集而言的,Mahout的算法运行在ApacheHadoop平台下,通过Mapreduce模式实现,但是Mahout并不严格要求算法的实现要基于Hadoop平台,单个节点或非Hadoop平台或Hadoop平台也可以。
Mahout核心库的非分布式算法也具有良好的性能。
图二十七Mahout提供的算法
Mahout中FPGrowth在Mapteduce模式下运行过程及用时:
图二十八FPGrowth运行过程及用时
Mapreduce模式运行过程中runningjobs:
图二十九MapReduce运行过程中runningjobs信息
运行结束后Completedjobs信息:
图三十MapReduce运行completedjobs信息
FPGrowth运行结束后HDFScontent:
图三十一FPGrowth运行后再HDFS的存储目录
各个文件目录的含义如下:
打开HDFS存储文件,出现乱码现象:
图三十二HDFS存储下文件现象
执行完毕后,直接查看结果出现乱码现象,是因为生成的文件被序列化了,还需要用mahout还原回来,命令如下:
mahoutseqdumper-i/user/hadoop/patterns/fpgrowth/part-r-00000-o~/data/
FPGrowth运行结果要通过以下命令才能正常显示在控制台:
bin/mahoutseqdumper–s
图三十三讲FPGrowth显示在控制台
5.Chukwa
Chukwa也是一个分布式系统,属于Hadoop系列产品,依赖于其他子项目,以HDFS作为存储层,以Mapreduce作为计算模型,以Pig作为高层的数据处理语言。
它采用的是流水式数据处理方式和模块化结构的收集系统,流水式模式就是利用利分布在各个节点客户端的采集器收集各个节点被监控的信息,然后以块的形式通过HTTPPost汇集到收集器,由它处理后转储到HDFS中,之后这些由Archiving处理(去除重复数据和合并数据)提纯,再由分离解析器利用Mapreduce将这些数据转换成结构化记录,并存储到数据库中,HICC(Hadoopinfrastructurecarecenter)通过调用数据库里数据,向用户展示可视化后的系统状态。
图三十四Chukwa数据处理流程(图片来自网络)
6.应用实例:
腾讯和淘宝大数据处理平台架构
当前互联网公司用得比较多的是HIVE/HBASE,如腾讯基于hive深度定制改造的TDW,淘宝的基于Hadoop的大数据平台,小米等公司选用hbase。
图三十五淘宝大数据平台分析(图片来自网络)
图三十六腾讯大数据平台分析(图片来自网络)
7.大数据分析技术现状
Scribe
Chukwa
Kafka
Flume
公司
Facebook
Apache
Linkedin
Cloudera
开源时间
2008年10月
2009年11月
2010年12月
2009年7月
语言
C/C++
Java
SCALA
Java
框架
push/push
push/push
push/pull
push/push
容错性
Collector和store之间有容错机制而agent和collector之间的容错需用户自己实现
Agent定期记录已送给collector的数据偏移量,一旦出现故障后,可根据偏移量继续发送数据。
Agent可用通过collector自动识别机制获取可用collector,store自己保存已经获取数据的偏移量,一旦collector出现故障,可根据偏移量继续获取数据。
Agent和collector,collector和store之间均有容错机制,且提供了三种级别的可靠性保证
负载均衡
无
无
Zookeeper
Zookeeper
可扩展性
好
好
好
好
Agent
Thriftclient需要自己实现
自带一些agent,如获取Hadooplogs的agent
用户需根据kafka提供的low-level和high-levelAPI自己实现
提供了各种非常丰富的agent
Collector
实际上是一个thriftserver
——
使用了sendfile,zero-copy等技术提高性能
系统提供了很多collector,直接可以使用
Store
支持HDFS
支持HDFS
支持HDFS
支持HDFS
总结
设计简单,易于使用,但容错和负载均衡方面不够好,且资料较少
属于Hadoop系列产品,且支持Hadoop,目前版本升级比较快,但还有待完善
设计架构push/pull非常巧妙,适合异构集群,但产品较新,其稳定性有待验证
非常优秀