Hadoop入门部署最佳实践
2012-12-03 15:32
801 查看
最近因为要使用Apache下的开源项目mahout做一
些文本数据挖掘研究,要研究Hadoop分布式平台。
本文主要介绍hadoop基本入门概念,各实体含义及其作用。
并参考使用Hadoop的版本r0.20.203.0,介绍简单集群部署入门,以及结合IDE开发入门实践。
Hadoop官网介绍,主要三个子项目:
HadoopCommon:Hadoop核心,ThecommonutilitiesthatsupporttheotherHadoopsubprojects.原来为HadoopCore
HadoopDistributedFileSystem(HDFS™):Hadoop分布式文件系统,Adistributedfilesystemthatprovideshigh-throughputaccesstoapplicationdata.
HadoopMapReduce:HadoopMapReduce框架,Asoftwareframeworkfordistributedprocessingoflargedatasetsoncomputeclusters.
以及其他有Apache掌管的Hadoop相关开源项目:
Avro™:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。Adataserializationsystem.
Cassandra™:Ascalablemulti-masterdatabasewithnosinglepointsoffailure.
Chukwa™:Adatacollectionsystemformanaginglargedistributedsystems.
HBase™:类似GoogleBigTable的分布式NoSQL列数据库。Ascalable,distributeddatabasethatsupportsstructureddatastorageforlargetables.
Hive™:数据仓库工具,由Facebook贡献。Adatawarehouseinfrastructurethatprovidesdatasummarizationandadhocquerying.
Mahout™:AScalablemachinelearninganddatamininglibrary.
Pig™:Ahigh-leveldata-flowlanguageandexecutionframeworkforparallelcomputation.
ZooKeeper™:分布式锁设施,提供类似GoogleChubby的功能,由Facebook贡献。Ahigh-performancecoordinationservicefordistributedapplications.
StandaloneMode(无集群模式)
Pseudo-DistributedMode(单机集群模式,又为伪分布式)
Fully-DistributedMode(多机集群模式)
前两种可用来做快速学习研究,参考官方部署文档可很轻松上手。仅需要下载release包:http://labs.renren.com/apache-mirror/hadoop/common/,要注意,hadoop的conf/hadoop-env.sh文件中需要配置JAVA_HOME的路径,要求为1.6+版本,JVM根目录就行。另外需要手动格式化分布式文件系统:$
bin/hadoopnamenode–format
之后,启动Hadoop后,就可以通过Web界面追踪观察了:
NameNode–http://localhost:50070/
JobTracker–http://localhost:50030/
http://darxin.info/archive/2010/02/e046f531/
更详细的参考:HadoopinAction的2.1章节
Hadoop的核心功能有两个:HDFS与MapReduce
与HDFS相关的服务有NameNode、SecondaryNameNode及DataNode;
与MapReduce相关的服务有JobTracker和TaskTracker两种。
Hadoop集群中有两种角色:master与slave,master又分为主master与次master。其中:
主master同时提供NameNode、SecondaryNameNode及JobTracker三种服务;
次master只提供SecondaryNameNode服务;
所有slave可以提供DateNode或TaskTracker两种服务。
一个Hadoop集群由多台电脑组成,每台电脑可作为一种或多种角色存在。
当使用Pseudo-DistributedMode创建Hadoop集群时,一台电脑同时完成主master和slave两种角色的任务。
在Fully-DistributedMode下,如果只有一台电脑作为master,则此电脑完成主master的任务;如果有多台电脑作为master存在,则第一台电脑完成主master的任务,其它电脑完成次master的任务。
HadoopinAction的第二章翻译
NameNode是HDFS的守护者;负责跟踪文件是如何分割成小数据块的,这些小块分别都存储到了那个数据节点上,以及整个分布式文件系统的健康环境。
NameNode的功能就是内存以及I/O的集中管理。
DataNode会不断的向NameNode汇报运行状态。从DataNode初始化开始,每一个DataNode要向NameNode汇报每个数据存储的数据内容。数据mapping完成后,DataNode会继续通知NameNode本地的数据变化,同时也会接收NameNode法国来的创建,移动,删除本地数据块等指令。
每个TaskTracker负责独立执行具体的task,而JobTracker负责分配task。虽然每个从节点上都有一个且唯一的一个TaskTracker,但是每个TaskTracker可以部署在多个JVMs之上,用于并行处理多个map以及reduce任务(task)。
TaskTracker的一个重要职责就是与JobTracker交互。如果JobTracker无法准时的获取到TaskTracker提交的信息,JobTracker就会假定TaskTracker已经崩溃了,JobTracker就会将任务分配给其他节点处理。
?
这样,我们很容易轻松来通过别名管理节点。假定让t1作为master负责namenode以及jobtracker
t2,t3,t4,t5作为slave作为datanode和tasktracker
SSH(SecureShell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,若我们没有设置master与slave之间的信任关系,我们每次用master访问slave是要输入密码的。
么配置信任关系的具体过程如下:具体原理见:http://hi.baidu.com/shirdrn/blog/item/523aec06fb28ae7d02088193.html
假设五台机器一致使用vanjor为hadoop使用用户,
在master机器上执行命令:$ssh-keygen-trsa,后会在/home/vanjor/.ssh目录下生成:私钥(id_rsa),公钥(id_rsa.pub)
在/home/vanjor/.ssh目录下通过命令:$cpid_rsa.pubauthorized_keys将id_rsa.pub内容复制到authorized_keys,没有则相当于新建后复制了。
在master上将文件authorized_keys拷贝到4台slave的.ssh目录里,命令为:$scpauthorized_keyst2:/home/username/.ssh/.文件权限问题,自行解决.authorized_keys的文件权限都注意通过chmod修改为644,以便远程访问。这样master在ssh到slave中就不需要通过slave口认证了。
位置:conf/core-site.xml
必须项:是
常用值:hdfs://t1:9000
说明:NameNode主服务器的地址
位置:conf/mapred-site.xml
必须项:是
常用值:http://t1:9001
说明:JobTracker主服务器地址及端口
位置:conf/hdfs-site.xml
必须项:否
默认值:0.0.0.0:50010
说明:DataNode服务的地址
此处1为hdfs冗余备份数目,value为1表示hdfs中每个文件只有单独一份,没有拷贝冗余
其他的一些默认配置参考:http://darxin.info/archive/2010/02/e046f531/
配置conf下的master与slave文件,五台机器中master均为添加一行t1,slave中均为添加四行,t2到t5
最后,手工对master节点进行namenode格式化:$bin/hadoopnamenode–format
这样master中启动bin/start-all.sh就可以通过web接口看是否运行正常了,更多的可以通过追踪log文件下的日志文件信息。
实际上hadoop已经内置了hadoopeclipse的插件,可在hadoop安装目录\contrib\eclipse-plugin下找到该插件,复制到eclipse\dropins\hadoop\plugins,中即可,之后运行hadoop程序,在Runas下一级都会有一个RunonHadoop的按钮了,详细参考:http://qa.taobao.com/?p=10659。
http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core/0.20.203.0在pom.xml中添加如下即可:
参考&资料推荐&下载:
HadoopinAction:http://ishare.iask.sina.com.cn/f/13834023.html
Hadoop-TheDefinitiveGuide:http://ishare.iask.sina.com.cn/f/13834271.htmlHadoop开发者入门专刊:http://ishare.iask.sina.com.cn/f/13617850.html
些文本数据挖掘研究,要研究
本文主要介绍hadoop基本入门概念,各实体含义及其作用。
并参考使用Hadoop的版本
Hadoop简介
以及其他有Apache掌管的Hadoop相关开源项目:
Hadoop部署
hadoop集群主要为三种模式:StandaloneMode(无集群模式)
Pseudo-DistributedMode(单机集群模式,又为伪分布式)
Fully-DistributedMode(多机集群模式)
前两种可用来做快速学习研究,参考官方
bin/hadoopnamenode–format
之后,启动Hadoop后,就可以通过Web界面追踪观察了:
NameNode–
JobTracker–
Hadoop实体&框架
部署完全分布式需要明确一些概念,参考:更详细的参考:
Hadoop的核心功能有两个:HDFS与MapReduce
与HDFS相关的服务有NameNode、SecondaryNameNode及DataNode;
与MapReduce相关的服务有JobTracker和TaskTracker两种。
Hadoop集群中有两种角色:master与slave,master又分为主master与次master。其中:
主master同时提供NameNode、SecondaryNameNode及JobTracker三种服务;
次master只提供SecondaryNameNode服务;
所有slave可以提供DateNode或TaskTracker两种服务。
一个Hadoop集群由多台电脑组成,每台电脑可作为一种或多种角色存在。
当使用Pseudo-DistributedMode创建Hadoop集群时,一台电脑同时完成主master和slave两种角色的任务。
在Fully-DistributedMode下,如果只有一台电脑作为master,则此电脑完成主master的任务;如果有多台电脑作为master存在,则第一台电脑完成主master的任务,其它电脑完成次master的任务。
Hadoop中的5个守护进程
hadoop启动后会有5个守护进程:namenode、secondarynamenode、datanode、jobtracker、tasktracker,参考对NameNode
NameNode就是HDFS主服务器(master),它控制着从服务器(slave)的后台程序处理低级别的I/O任务,这些从服务器就是后面要提到的DataNode.每个集群对应一个NameNode。NameNode是HDFS的守护者;负责跟踪文件是如何分割成小数据块的,这些小块分别都存储到了那个数据节点上,以及整个分布式文件系统的健康环境。
NameNode的功能就是内存以及I/O的集中管理。
DataNode
集群中的每一个从服务器(slave)都会运行一个DataNode后台程序。此后台程序负责读写HDFS数据块到本地的文件系统。当你想通过客户端在HDFS控制下的文件块中进行某个数据的读写操作的时候,NameNode将会告诉客户端到哪个DataNode进行此操作。客户端将直接与此DataNode服务器上的deamons程序进行通信,并操作相关的数据块。而且,DataNode之间可以相互复制数据块,作为冗余备份。DataNode会不断的向NameNode汇报运行状态。从DataNode初始化开始,每一个DataNode要向NameNode汇报每个数据存储的数据内容。数据mapping完成后,DataNode会继续通知NameNode本地的数据变化,同时也会接收NameNode法国来的创建,移动,删除本地数据块等指令。
SecondaryNameNode(在0.21.0中已经被其他节点所取代)
SecondaryNameNode(SNN)是一个用来监控HDFS状态的辅助deamon。就像NameNode一样,每一个集群都有一个SNN,并且它实际上是属于一台单独的服务器。没有一个DataNode和TaskTracker运行在统一台服务器上。SNN不同于NameNode之处在于这个进程并不接收或者记录任何实时的数据变化。但是,它会与NameNode进行通信,以便间歇的保存HDSF元数据的快照。由于NameNode是单点的,所以通过SNN的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,SNN可以及时的作为备用NameNode使用。JobTracker
JobTrackerdeamon用来链接你的应用程序与Hadoop。一旦你提交代码到集群之中,JobTracker决定哪个文件去被处理,并且为不同的task分配节点,并且监控所有运行的task。一旦某个task失败了,JobTracker就会自动重新开启这个task,也许这个task会在不同的节点上,具体运行情况取决于重启的预设值。每一个Hadoop集群只有一个JobTracker。它一般会作为集群的一个master节点。TaskTracker
与存储进程相结合的,运算进程也遵循主从架构:TaskTrackers在各自的从节点上管理每个独立的task。每个TaskTracker负责独立执行具体的task,而JobTracker负责分配task。虽然每个从节点上都有一个且唯一的一个TaskTracker,但是每个TaskTracker可以部署在多个JVMs之上,用于并行处理多个map以及reduce任务(task)。
TaskTracker的一个重要职责就是与JobTracker交互。如果JobTracker无法准时的获取到TaskTracker提交的信息,JobTracker就会假定TaskTracker已经崩溃了,JobTracker就会将任务分配给其他节点处理。
Hadoop集群实践
Task:对局域网中5台互连机器构建集群。STEP1:HOSTALAIS&&SSH
HOST配置
方便管理,编辑5台机器的hosts文件:添加t2,t3,t4,t5作为slave作为datanode和tasktracker
制作发布ssh密钥
Hadoop启动以后,Namenode是通过么配置信任关系的具体过程如下:具体原理见:
假设五台机器一致使用vanjor为hadoop使用用户,
在master机器上执行命令:$ssh-keygen-trsa,后会在/home/vanjor/.ssh目录下生成:私钥(id_rsa),公钥(id_rsa.pub)
在/home/vanjor/.ssh目录下通过命令:$cpid_rsa.pubauthorized_keys将id_rsa.pub内容复制到authorized_keys,没有则相当于新建后复制了。
在master上将文件authorized_keys拷贝到4台slave的.ssh目录里,命令为:$scpauthorized_keyst2:/home/username/.ssh/.文件权限问题,自行解决.authorized_keys的文件权限都注意通过chmod修改为644,以便远程访问。这样master在ssh到slave中就不需要通过slave口认证了。
STEP2解压配置:
Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户,在5台机器对应相同的目录下解压hadoop源文件。配置namenode
在t1到t5均配置上相同的namenode主服务器地址:位置:conf/core-site.xml
必须项:是
常用值:hdfs://t1:9000
说明:NameNode主服务器的地址
<configuration> <property> <name>fs.default.name</name> <value>hdfs://t1:9000</value> </property> </configuration>
配置jobtracker
在t1到t5均配置上相同的jobtracker服务器地址:位置:conf/mapred-site.xml
必须项:是
常用值:http://t1:9001
说明:JobTracker主服务器地址及端口
<configuration> <property> <name>mapred.job.tracker</name> <value>t1:9001</value> </property> </configuration>
配置datanode
在四个slave中配置如下位置:conf/hdfs-site.xml
必须项:否
默认值:0.0.0.0:50010
说明:DataNode服务的地址
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
此处1为hdfs冗余备份数目,value为1表示hdfs中每个文件只有单独一份,没有拷贝冗余
其他的一些默认配置参考:
配置conf下的master与slave文件,五台机器中master均为添加一行t1,slave中均为添加四行,t2到t5
最后,手工对master节点进行namenode格式化:$bin/hadoopnamenode–format
这样master中启动bin/start-all.sh就可以通过web接口看是否运行正常了,更多的可以通过追踪log文件下的日志文件信息。
开发&IDE环境
hadoopeclipse插件
Hadoop程序运行可以简单的通过如样列中的:$bin/hadoopjarhadoop-examples-*.jargrepinputoutput‘dfs[a-z.]+’,命令行方式运行,但是实际在开发过程中,每次运行前都要打包发布,过于麻烦。实际上hadoop已经内置了hadoopeclipse的插件,可在hadoop安装目录\contrib\eclipse-plugin下找到该插件,复制到eclipse\dropins\hadoop\plugins,中即可,之后运行hadoop程序,在Runas下一级都会有一个RunonHadoop的按钮了,详细参考:
Hadoopeclipse项目创建
可以将Hadoop目录下的lib文件夹中所有jar添加到eclipse的projectpath中,或可以直接配置Hadoopmaven项目创建
在mvnrepository中查到:<dependency> <groupId>org.apache.mahout.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>0.20.203</version> </dependency>
HadoopMapReduceFramework入门,推荐程序WordCount:
http://wiki.apache.org/hadoop/WordCount
参考&资料推荐&下载:
HadoopinAction:
Hadoop-TheDefinitiveGuide:
相关文章推荐
- vue 快速入门与最佳实践(vue-cli, webpack, vue 最佳实践)
- Cocos Creator—最佳构建部署实践
- SSL/TLS部署最佳实践
- RocketMQ入门(2)最佳实践
- Hadoop管理员的十个最佳实践
- 分布式计算开源框架Hadoop入门实践
- smokeping安装部署最佳实践
- hadoop-impala十大优化之(6)—控制资源使用最佳实践
- hadoop-impala十大优化之(7)—Impala查询运行时过滤最佳实践
- IBM Cognos 11链接Hadoop最佳实践
- Hadoop管理员的十个最佳实践(转)
- 基础入门_Python-模块和包.运维开发中内建模块getopt的最佳实践?
- Spark2.1.0 + CarbonData1.0.0+hadoop2.7.2集群模式部署及使用入门
- Hadoop的kerberos的实践部署
- piwik安装部署最佳实践
- WebSphere Application Server 环境配置与应用部署最佳实践
- Hadoop入门进阶课程8--Hive介绍和安装部署
- Zabbix3.0部署最佳实践
- 运维经验分享:Hadoop管理员的十个最佳实践
- 分布式计算开源框架Hadoop入门实践