Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx

上传人:b****8 文档编号:9349864 上传时间:2023-05-18 格式:DOCX 页数:14 大小:54.49KB
下载 相关 举报
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第1页
第1页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第2页
第2页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第3页
第3页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第4页
第4页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第5页
第5页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第6页
第6页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第7页
第7页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第8页
第8页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第9页
第9页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第10页
第10页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第11页
第11页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第12页
第12页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第13页
第13页 / 共14页
Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx

《Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx》由会员分享,可在线阅读,更多相关《Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx(14页珍藏版)》请在冰点文库上搜索。

Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门.docx

Hadoop0200HDFS+MapReduce+Hive+HBase十分钟快速入门

HDFS+MapReduce+Hive+HBase十分钟快速入门

易剑2009-8-19

1.前言

本文的目的是让一个从未接触Hadoop的人,在很短的时间内快速上手,掌握编译、安装和简单的使用。

2.Hadoop家族

截止2009-8-19日,整个Hadoop家族由以下几个子项目组成:

成员名

用途

HadoopCommon

Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:

配置文件和日志操作等。

Avro

Avro是dougcutting主持的RPC项目,有点类似Google的protobuf和Facebook的thrift。

avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。

Chukwa

Chukwa是基于Hadoop的大集群监控系统,由yahoo贡献。

HBase

基于HadoopDistributedFileSystem,是一个开源的,基于列存储模型的分布式数据库。

HDFS

分布式文件系统

Hive

hive类似CloudBase,也是基于hadoop分布式计算平台上的提供datawarehouse的sql功能的一套软件。

使得存储在hadoop里面的海量数据的汇总,即席查询简单化。

hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。

MapReduce

实现了MapReduce编程框架

Pig

Pig是SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。

Yahoo网格运算部门开发的又一个克隆Google的项目Sawzall。

ZooKeeper

Zookeeper是Google的Chubby一个开源的实现。

它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:

配置维护、名字服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

3.演练环境

3.1.操作系统

SuSE10,Linux2.6.16,32位版本。

3.2.Hadoop

Hive通过SVN直接从网上下载原代码,其它采用hadoop-0.20.0.tar.gz二进制安装包,所以只需要编译Hive。

另外,请注意不要下载2009-8-19号的Hive,2009-8-19提交的Hive版本在hadoop-0.20.0.tar.gz上编译通不过,原因是:

Hive源代码根目录\ql\src\java\org\apache\hadoop\hive\ql\exec\FileSinkOperator.java文件中多了一行:

importpress.LzoCodec;

而应当下载2009-8-4号和2009-8-19之间的版本,或2009-8-19之后的版本。

3.3.Hive

在0.20.0版本的Hadoop二进制安装包中,并没有集成Hive,所以Hive需要自己编译,编译时需要使用到ant和ivy两个工具,而且依赖于Hadoop。

3.4.Java

运行Hadoop和编译Hive,都需要使用到Java,所以需要第一个安装的是Java。

3.5.机器

演练时,在3台机器上搭建Hadoop集群,假设这3台机器如下表所示:

机器名

机器IP

用途

Hadoop-A

192.168.0.1

用作Master

Hadoop-B

192.168.0.2

用作Slave

Hadoop-C

192.168.0.3

用作Slave

注意事项:

机器名中不能包括下划线“_”,但可以包括横线。

另可使用不带参数的hostname来查看机器名,修改机器名方法为:

hostname机器名,如:

hostnameHadoop-A。

另外,集群内所有的机器登录用户名和密码要保持相同。

3.6.安装列表

安装

说明

Java1.6

A、B和C三台机器都需要安装

Hadoop0.20.0

A、B和C三台机器都需要安装

Hive

不需要在B和C两台机器上安装,也就是Slave机器不需要安装

ant

不需要在B和C两台机器上安装,也就是Slave机器不需要安装

ivy

不需要在B和C两台机器上安装,也就是Slave机器不需要安装

注意事项:

为求简单所有操作均以root用户完成,实际上可以使用非root用户,但环境变量就不能直接在/etc/profile文件中添加了。

3.7.安装路线

4.配置ssh2和修改/etc/hosts

需要在所有机器上配置ssh2和修改/etc/hosts。

4.1.配置ssh2

1)mkdir~/.ssh2#如果~/.ssh2目录已经存在,则这一步可以跳过

2)cd~/.ssh2

3)ssh-keygen2-trsa

4)echo"IdKeyid_rsa_2048_a">identification

5)echo"keyid_rsa_2048_a.pub">authorization

4.2.修改/etc/hosts

1)在/etc/hosts文件中增加如下三行:

192.168.0.1Hadoop-A

192.168.0.2Hadoop-B

192.168.0.3Hadoop-C

并根据上述关系,使用hostname命令修改三台机器的机器名。

5.安装Java

1)从下载jre,请注意是Java1.6版本,原因是Hadoop和Hive使用到了模板等特性

2)下载“Linux(自解压文件)”这个版本的jre,如下图所示

3)

将下载的Java二进制安装包jre-6u15-linux-i586.bin上传到/usr/local目录

4)为jre-6u15-linux-i586.bin文件增加可执行权限:

chmod+xjre-6u15-linux-i586.bin

5)运行jre-6u15-linux-i586.bin:

./jre-6u15-linux-i586.bin

6)用户协议接受,选择yes

7)安装成功后,在/etc/profile增加如下一行:

exportPATH=/usr/local/jdk/bin:

$PATH

6.安装Hadoop

1)从http:

//hadoop.apache.org/common/releases.html下载Hadoop二进制安装包hadoop-0.20.0.tar.gz

2)将hadoop-0.20.0.tar.gz上传到/usr/local目录

3)在/usr/local目录,将hadoop-0.20.0.tar.gz解压

4)为hadoop-0.20.0建一个软链接:

ln-shadoop-0.20.0hadoop

5)在/etc/profile文件中,增加如下两行:

exportHADOOP_HOME=/usr/local/hadoop

exportPATH=$HADOOP_HOME/bin:

$PATH

完成以上步骤后,Hadoop就安装好了。

7.配置HDFS

7.1.修改hadoop-env.sh

所有机器做同样操作。

hadoop-env.sh位于/usr/local/hadoop/conf目录下,需要在这个文件中设置环境变量JAVA_HOME,增加如下一行即可:

exportJAVA_HOME=/usr/local/jre

7.2.修改core-site.xml

所有机器做同样操作。

在hadoop-0.20.0.tar.gz安装包中,conf目录下的core-site.xml默认是空的,但src/core目录下有一个缺省的配置文件core-default.xml,所以只需要将它复制到conf目录下,并重命名成core-site.xml即可,下述操作都是基于此操作的。

core-site.xml文件位于/usr/local/hadoop/conf目录下。

7.2.1.hadoop.tmp.dir

设置临时文件目录参数hadoop.tmp.dir,默认情况下master会将元数据等存在这个目录下,而slave会将所有上传的文件放在这个目录下,在这里数据目录统一为/usr/local/hadoop/data:

hadoop.tmp.dir

/usr/local/hadoop/data

Abaseforothertemporarydirectories.

注意事项:

由于上传到Hadoop的所有文件都会被存放在hadoop.tmp.dir所指定的目录,所以要确保这个目录是足够大的。

7.2.2.fs.default.name

master用这个参数,提供基于http协议的状态上报界面,而slave通过这个地址连接master,设置如下:

fs.default.name

hdfs:

//Hadoop-A:

54310

Thenameofthedefaultfilesystem.AURIwhose

schemeandauthoritydeterminetheFileSystemimplementation.The

uri'sschemedeterminestheconfigproperty(fs.SCHEME.impl)naming

theFileSystemimplementationclass.Theuri'sauthorityisusedto

determinethehost,port,etc.forafilesystem.

备注:

fs.default.name指定NameNode的IP地址和端口号,缺省值是file:

///,,表示使用本地文件系统,,用于单机非分布式模式。

dfs.replication指定HDFS中每Block被复制的次数,起数据冗余备份的作用。

在典型的生产系统中,这个数常常设置为3。

7.3.修改masters

这一步只需要在master节点上执行。

这个文件存储备master节点的IP或机器名,建议使用机器名,每行一个机器名。

主master会将元数据等备份到备master节点,文件位于conf目录下。

这里,我们为masters文件增加如下一行即可:

Hadoop-A

7.4.修改slaves

这一步也只需要在master节点上执行,以便master以ssh2方式去启动所有的slave节点。

这个文件存储slave节点的IP或机器名,建议使用机器名,每行一个机器名。

这里我们增加如下两行:

Hadoop-B

Hadoop-C

7.5.修改hdfs-site.xml

所有机器做同样操作。

从src/hdfs目录下,将hdfs-default.xml复制到conf目录,并重命名成hdfs-site.xml,这里不需要修改此文件。

8.配置MapReduce

8.1.修改mapred-default.xml

所有机器做同样操作。

从src/mapred目录下,将mapred-default.xml复制到conf目录,并重命名成mapred-site.xml。

mapred.job.tracker

Hadoop-A:

54311

ThehostandportthattheMapReducejobtrackerruns

at.If"local",thenjobsarerunin-processasasinglemap

andreducetask.

备注:

mapred.job.tracker指定JobTracker的IP地址和端口号。

缺省值是local,,表示在本地同一Java进程内执行JobTracker和TaskTracker,,用于单机非分布式模式。

9.安装Hive

hadoop-0.20.0中并没有集成二进制的Hive,所以需要通过源代码编译一个,但是2009-8-19日提交的Hive并不能在hadoop-0.20.0上编译,而应当使用2009-8-4之后和2009-8-19之间的版本。

9.1.安装ant

1)从http:

//ant.apache.org/下载ant二进制安装包,选择1.7.1版本

2)下载后,将包apache-ant-1.7.1-bin.zip上传到/usr/local目录

3)进入/usr/local目录,将apache-ant-1.7.1-bin.zip解压:

unzipapache-ant-1.7.1-bin.zip

4)进入/usr/local目录,为ant建一个软连接:

ln-sapache-ant-1.7.1ant

5)修改/etc/profile,增加如下行:

exportPATH=/usr/local/ant/bin:

$PATH

至此,ant算是安装好了

9.2.安装ivy

1)从http:

//www.apache.org/dist/ant/ivy/下载ivy二进制安装包,选择2.1.0-rc2版本

2)下载后,将包apache-ivy-2.1.0-rc2-bin.tar.gz上传到/usr/local目录

3)进入/usr/local目录,将apache-ivy-2.1.0-rc2-bin.tar.gz解压:

tarxzfapache-ivy-2.1.0-rc2-bin.tar.gz

4)进入/usr/local目录,为ivy建一个软连接:

ln-sapache-ivy-2.1.0-rc2ivy

6)修改/etc/profile,增加如下行:

exportIVY_HOME=/usr/local/ivy

至此,ivy算是安装好了。

9.3.编译Hive

在编译Hive之前,请确保HADOOP_HOME和IVY_HOME两个环境变量已经生效。

1)使用svn从http:

//svn.apache.org/repos/asf/hadoop/hive/trunk下载Hive源代码

2)将下载来的Hive源代码打包,然后上传到Hadoop-A机器

3)解压Hive源代码包

4)修改shims/ivy.xml:

只保留0.20.0的配置,否则编译会出错,将原ivy.xml文件:

修改成如下:

5)运行ant开始编译:

ant-Dtarget.dir=/usr/local/hadoop/hive-Dhadoop.version=0.20.0package

这步完成之后,Hive会被安装到/usr/local/hadoop/hive目录下

6)添加Hive环境变量,在/etc/profile文件中增加如下两行:

exportHIVE_HOME=/usr/local/hadoop/hive

exportPATH=$HIVE_HOME/bin:

$PATH

10.安装HBase

1)从http:

//svn.apache.org/repos/asf/hadoop/hbase/trunk下载最新的HBase源代码

2)将HBase源代码打包,并上传到Linux上

3)解压HBase源代码包

4)编译HBase:

ant-Dtarget.dir=/usr/local/hadoop/hbase-Dhadoop.version=0.20.0package

5)编译成功之后,HBase可能并不象Hive一样自动安装到/usr/local/hadoop/hbase目录下,这个时候需要手工复制到HBase安装目录下:

将build/hbase-0.21.0-dev整个目录复制到/usr/local/hadoop目录下,并将hbase-0.21.0-dev重命名成hbase即可

6)进入/usr/local/hadoop/hbase/conf目录,将hbase-default.xml复制一份,并命名成hbase-site.xml

7)修改hbase-site.xml:

设置hbase.rootdir的值为:

hdfs:

//Hadoop-A:

54310/hbase;

设置hbase.master(hbase.master可能为hbase.master.port)的值为:

Hadoop-A:

60000

8)修改hbase-env.sh:

设置环境变量JAVA_HOME:

exportJAVA_HOME=/usr/local/jre

9)在Master节点,还需要修改regionservers,在这个文件中列出所有的slave机器,一行一个机器名:

Hadoop-B

Hadoop-C

这一步不用在slave节点上操作。

10)通过以上操作,HBase已经安装和配置好,然后应当打包,将它部署到集群的所有节点上

11)对于HBase,还需要将hbase.zookeeper.quorum的值修改成master节点的主机名,如:

Hadoop-A

11.体验

11.1.启动和停止

11.1.1.hadoop

在启动Hadoop集群之前,需要先格式化,在master节点上执行下面的命令即可:

hadoopnamenode-format

11.1.2.start-all.sh

这个脚本用来启动Hadoop。

可以通过http:

//172.25.38.127:

50070来查看HDFS的启动情况。

可以通过http:

//172.25.38.127:

50030来查看MapReduce的启动情况。

11.1.3.stop-all.sh

这个脚本用来停止Hadoop。

11.2.体验HDFS

HDFS的使用和普通的Linux命令差不多,只不过各类操作都必须作为hadoop命令的参数,如在hadoop上执行ls操作:

hadoopfs-ls/

这条命令相当于Linux下的ls/。

11.3.体验MapReduce

体验MapReduce,可以使用Hadoop自带的WordCount,如:

hadoopjarwordcount.jar/x/x/z

其中wordcount.jar是WordCount的可执行包,/x/x是源文件,是一段以逗号分隔的英文片断,而/z是结果存放的目录。

11.4.体验Hive

Hive的使用非常简单,照着http:

//wiki.apache.org/hadoop/Hive/GettingStarted上说的来操作就可以了。

12.FAQ

12.1.如何查看Hadoop进程

如果安装了JDK,则在JDK的bin目录下有一个jps命令,可以用来查看java进程,如:

#jps

27612NameNode

17369Jps

16206HQuorumPeer

15423HMaster

27761SecondaryNameNode

27839JobTracker

其中,第一列为进程号,第二列为进程名称。

12.2.ssh端口问题

如果ssh不是使用默认端口,则需要修改hadoop-env.sh文件中的HADOOP_SSH_OPTS环境变量,假设ssh端口号为8000,则可以简单设置为:

exportHADOOP_SSH_OPTS="-p8000"

如果安装了HBase,还应当修改hbase-env.sh文件中的HBASE_SSH_OPTS。

12.3.首次ssh登录问题

首次通过ssh登录另一台机器时,可能会遇到一个yes确认过程,因此在启动之前,应当先手工或使用其它脚本ssh成功登录一次,否则容易遇到如下错误:

r#./start-hbase.sh

DOSS38-127-sles10:

Hostkeynotfoundfromdatabase.

DOSS38-127-sles10:

Keyfingerprint:

DOSS38-127-sles10:

xuror-ledab-buhim-zohok-tanop-cyrig-tysac-gyhyp-refan-semim-pyxex

DOSS38-127-sles10:

Youcangetapublickey'sfingerprintbyrunning

DOSS38-127-sles10:

%ssh-keygen-Fpublickey.pub

DOSS38-127-sles10:

onthekeyfile.

DOSS38-127-sles10:

warning:

tcgetattrfailedinssh_rl_set_tty_modes_for_fd:

fd1:

Invalidargument

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2