- 浏览: 219327 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yugouai:
下载不了啊。。。
如何获取hive建表语句 -
help:
[root@hadoop-namenode 1 5 /usr/ ...
Sqoop -
085567:
lvshuding 写道请问,sqoop 安装时不用配置什么吗 ...
Sqoop -
085567:
lvshuding 写道请问,导入数据时,kv1.txt的文件 ...
hive与hbase整合 -
lvshuding:
请问,sqoop 安装时不用配置什么吗?
Sqoop
HDFS+MapReduce+Hive+HBase十分钟快速入门
易剑 2009-8-19
1. 前言
本文的目的是让一个从未接触Hadoop的人,在很短的时间内快速上手,掌握编译、安装和简单的使用。
2. Hadoop家族
截止2009-8-19日,整个Hadoop家族由以下几个子项目组成:
成员名 用途
Hadoop Common Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。
Avro Avro是doug cutting主持的RPC项目,有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。
Chukwa Chukwa是基于Hadoop的大集群监控系统,由yahoo贡献。
HBase 基于Hadoop Distributed File System,是一个开源的,基于列存储模型的分布式数据库。
HDFS 分布式文件系统
Hive hive类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的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文件中多了一行:
import org.apache.hadoop.io.compress.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 机器名,如:hostname Hadoop-A。另外,集群内所有的机器登录用户名和密码要保持相同。
3.6. 安装列表
安装 说明
Java 1.6 A、B和C三台机器都需要安装
Hadoop 0.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 -t rsa
4) echo "IdKey id_rsa_2048_a" > identification
5) echo "key id_rsa_2048_a.pub" > authorization
4.2. 修改/etc/hosts
1) 在/etc/hosts文件中增加如下三行:
192.168.0.1 Hadoop-A
192.168.0.2 Hadoop-B
192.168.0.3 Hadoop-C
并根据上述关系,使用hostname命令修改三台机器的机器名。
5. 安装Java
1) 从http://www.java.com/zh_CN/download/manual.jsp 下载jre,请注意是Java1.6版本,原因是Hadoop和Hive使用到了模板等特性
2) 下载“Linux (自解压文件)”这个版本的jre,如下图所示
3) 将下载的Java二进制安装包jre-6u15-linux-i586.bin上传到/usr/local目录
4) 为jre-6u15-linux-i586.bin文件增加可执行权限:chmod +x jre-6u15-linux-i586.bin
5) 运行jre-6u15-linux-i586.bin:./jre-6u15-linux-i586.bin
6) 用户协议接受,选择yes
7) 安装成功后,在/etc/profile增加如下一行:
export PATH=/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 -s hadoop-0.20.0 hadoop
5) 在/etc/profile文件中,增加如下两行:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
完成以上步骤后,Hadoop就安装好了。
7. 配置HDFS
7.1. 修改hadoop-env.sh
所有机器做同样操作。
hadoop-env.sh位于/usr/local/hadoop/conf目录下,需要在这个文件中设置环境变量JAVA_HOME,增加如下一行即可:
export JAVA_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:
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data</value>
<description>A base for other temporary directories.</description>
</property>
注意事项:由于上传到Hadoop的所有文件都会被存放在hadoop.tmp.dir所指定的目录,所以要确保这个目录是足够大的。
7.2.2.fs.default.name
master用这个参数,提供基于http协议的状态上报界面,而slave通过这个地址连接master,设置如下:
<property>
<name>fs.default.name</name>
<value>hdfs://Hadoop-A:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri''s scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri''s authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
备注: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。
<property>
<name>mapred.job.tracker</name>
<value>Hadoop-A:54311</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
备注: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解压:unzip apache-ant-1.7.1-bin.zip
4) 进入/usr/local目录,为ant建一个软连接:ln -s apache-ant-1.7.1 ant
5) 修改/etc/profile,增加如下行:
export PATH=/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解压:tar xzf apache-ivy-2.1.0-rc2-bin.tar.gz
4) 进入/usr/local目录,为ivy建一个软连接:ln -s apache-ivy-2.1.0-rc2 ivy
6) 修改/etc/profile,增加如下行:
export IVY_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.0 package
这步完成之后,Hive会被安装到/usr/local/hadoop/hive目录下
6) 添加Hive环境变量,在/etc/profile文件中增加如下两行:
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$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.0 package
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:export JAVA_HOME=/usr/local/jre
9) 在Master节点,还需要修改regionservers,在这个文件中列出所有的slave机器,一行一个机器名:
Hadoop-B
Hadoop-C
这一步不用在slave节点上操作。
10) 通过以上操作,HBase已经安装和配置好,然后应当打包,将它部署到集群的所有节点上
11. 体验
11.1. 启动和停止
11.1.1.hadoop
在启动Hadoop集群之前,需要先格式化,在master节点上执行下面的命令即可:
hadoop namenode -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操作:
hadoop fs -ls /
这条命令相当于Linux下的ls /。
11.3. 体验MapReduce
体验MapReduce,可以使用Hadoop自带的WordCount,如:
hadoop jar wordcount.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
27612 NameNode
17369 Jps
16206 HQuorumPeer
15423 HMaster
27761 SecondaryNameNode
27839 JobTracker
其中,第一列为进程号,第二列为进程名称。
12.2. ssh端口问题
如果ssh不是使用默认端口,则需要修改hadoop-env.sh文件中的HADOOP_SSH_OPTS环境变量,假设ssh端口号为8000,则可以简单设置为:export HADOOP_SSH_OPTS="-p 8000"
如果安装了HBase,还应当修改hbase-env.sh文件中的HBASE_SSH_OPTS。
12.3. 首次ssh登录问题
首次通过ssh登录另一台机器时,可能会遇到一个yes确认过程,因此在启动之前,应当先手工或使用其它脚本ssh成功登录一次,否则容易遇到如下错误:
r# ./start-hbase.sh
DOSS38-127-sles10: Host key not found from database.
DOSS38-127-sles10: Key fingerprint:
DOSS38-127-sles10: xuror-ledab-buhim-zohok-tanop-cyrig-tysac-gyhyp-refan-semim-pyxex
DOSS38-127-sles10: You can get a public key''s fingerprint by running
DOSS38-127-sles10: % ssh-keygen -F publickey.pub
DOSS38-127-sles10: on the keyfile.
DOSS38-127-sles10: warning: tcgetattr failed in ssh_rl_set_tty_modes_for_fd: fd 1: Invalid argument
易剑 2009-8-19
1. 前言
本文的目的是让一个从未接触Hadoop的人,在很短的时间内快速上手,掌握编译、安装和简单的使用。
2. Hadoop家族
截止2009-8-19日,整个Hadoop家族由以下几个子项目组成:
成员名 用途
Hadoop Common Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。
Avro Avro是doug cutting主持的RPC项目,有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。
Chukwa Chukwa是基于Hadoop的大集群监控系统,由yahoo贡献。
HBase 基于Hadoop Distributed File System,是一个开源的,基于列存储模型的分布式数据库。
HDFS 分布式文件系统
Hive hive类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的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文件中多了一行:
import org.apache.hadoop.io.compress.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 机器名,如:hostname Hadoop-A。另外,集群内所有的机器登录用户名和密码要保持相同。
3.6. 安装列表
安装 说明
Java 1.6 A、B和C三台机器都需要安装
Hadoop 0.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 -t rsa
4) echo "IdKey id_rsa_2048_a" > identification
5) echo "key id_rsa_2048_a.pub" > authorization
4.2. 修改/etc/hosts
1) 在/etc/hosts文件中增加如下三行:
192.168.0.1 Hadoop-A
192.168.0.2 Hadoop-B
192.168.0.3 Hadoop-C
并根据上述关系,使用hostname命令修改三台机器的机器名。
5. 安装Java
1) 从http://www.java.com/zh_CN/download/manual.jsp 下载jre,请注意是Java1.6版本,原因是Hadoop和Hive使用到了模板等特性
2) 下载“Linux (自解压文件)”这个版本的jre,如下图所示
3) 将下载的Java二进制安装包jre-6u15-linux-i586.bin上传到/usr/local目录
4) 为jre-6u15-linux-i586.bin文件增加可执行权限:chmod +x jre-6u15-linux-i586.bin
5) 运行jre-6u15-linux-i586.bin:./jre-6u15-linux-i586.bin
6) 用户协议接受,选择yes
7) 安装成功后,在/etc/profile增加如下一行:
export PATH=/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 -s hadoop-0.20.0 hadoop
5) 在/etc/profile文件中,增加如下两行:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
完成以上步骤后,Hadoop就安装好了。
7. 配置HDFS
7.1. 修改hadoop-env.sh
所有机器做同样操作。
hadoop-env.sh位于/usr/local/hadoop/conf目录下,需要在这个文件中设置环境变量JAVA_HOME,增加如下一行即可:
export JAVA_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:
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data</value>
<description>A base for other temporary directories.</description>
</property>
注意事项:由于上传到Hadoop的所有文件都会被存放在hadoop.tmp.dir所指定的目录,所以要确保这个目录是足够大的。
7.2.2.fs.default.name
master用这个参数,提供基于http协议的状态上报界面,而slave通过这个地址连接master,设置如下:
<property>
<name>fs.default.name</name>
<value>hdfs://Hadoop-A:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri''s scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri''s authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
备注: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。
<property>
<name>mapred.job.tracker</name>
<value>Hadoop-A:54311</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
备注: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解压:unzip apache-ant-1.7.1-bin.zip
4) 进入/usr/local目录,为ant建一个软连接:ln -s apache-ant-1.7.1 ant
5) 修改/etc/profile,增加如下行:
export PATH=/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解压:tar xzf apache-ivy-2.1.0-rc2-bin.tar.gz
4) 进入/usr/local目录,为ivy建一个软连接:ln -s apache-ivy-2.1.0-rc2 ivy
6) 修改/etc/profile,增加如下行:
export IVY_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.0 package
这步完成之后,Hive会被安装到/usr/local/hadoop/hive目录下
6) 添加Hive环境变量,在/etc/profile文件中增加如下两行:
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$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.0 package
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:export JAVA_HOME=/usr/local/jre
9) 在Master节点,还需要修改regionservers,在这个文件中列出所有的slave机器,一行一个机器名:
Hadoop-B
Hadoop-C
这一步不用在slave节点上操作。
10) 通过以上操作,HBase已经安装和配置好,然后应当打包,将它部署到集群的所有节点上
11. 体验
11.1. 启动和停止
11.1.1.hadoop
在启动Hadoop集群之前,需要先格式化,在master节点上执行下面的命令即可:
hadoop namenode -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操作:
hadoop fs -ls /
这条命令相当于Linux下的ls /。
11.3. 体验MapReduce
体验MapReduce,可以使用Hadoop自带的WordCount,如:
hadoop jar wordcount.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
27612 NameNode
17369 Jps
16206 HQuorumPeer
15423 HMaster
27761 SecondaryNameNode
27839 JobTracker
其中,第一列为进程号,第二列为进程名称。
12.2. ssh端口问题
如果ssh不是使用默认端口,则需要修改hadoop-env.sh文件中的HADOOP_SSH_OPTS环境变量,假设ssh端口号为8000,则可以简单设置为:export HADOOP_SSH_OPTS="-p 8000"
如果安装了HBase,还应当修改hbase-env.sh文件中的HBASE_SSH_OPTS。
12.3. 首次ssh登录问题
首次通过ssh登录另一台机器时,可能会遇到一个yes确认过程,因此在启动之前,应当先手工或使用其它脚本ssh成功登录一次,否则容易遇到如下错误:
r# ./start-hbase.sh
DOSS38-127-sles10: Host key not found from database.
DOSS38-127-sles10: Key fingerprint:
DOSS38-127-sles10: xuror-ledab-buhim-zohok-tanop-cyrig-tysac-gyhyp-refan-semim-pyxex
DOSS38-127-sles10: You can get a public key''s fingerprint by running
DOSS38-127-sles10: % ssh-keygen -F publickey.pub
DOSS38-127-sles10: on the keyfile.
DOSS38-127-sles10: warning: tcgetattr failed in ssh_rl_set_tty_modes_for_fd: fd 1: Invalid argument
发表评论
-
hadoop状态分析系统chukwa(转)
2012-03-21 15:23 1070Apache 的开源项目 hadoop ... -
sqoop could not find any valid local directory 异常解决
2011-09-07 15:10 2544在没有更改任何配置的情况下sqoop突然报警:org.apac ... -
Hadoop 数据类型与文件结构剖析 Sequence, Map, Set, Array, BloomMap Files
2011-04-24 15:06 1055今天要推荐的一篇文章 ... -
百度Hadoop分布式系统揭秘:4000节点集群
2011-04-24 14:54 1138在 NoSQL 方面,之前了解到百度对 Hadoop 和 ... -
ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NumberFormatExc
2011-04-19 19:20 2206namenode莫名奇妙的启动不了,看log: 2011-0 ... -
zookeeper安装
2011-04-01 16:27 1062前提是已经安装好HADOOP ... -
sqoop应用错误记录
2011-04-01 16:26 860Connection refused 解决 ... -
Hadoop常见问题及解决办法(2)
2011-03-16 15:23 14231:Shuffle Error: Exceeded MA ... -
Hadoop集群优化手记
2011-03-16 15:21 1258<property> <name> ... -
Sqoop
2011-03-16 15:16 4338Sqoop是什么? 它是一个工具,一个在Hadoop和关 ... -
海量数据处理相关资料
2011-03-01 18:16 895逖靖寒的世界 :http://gpcuster.cn ... -
Hadoop中常出现的错误以及解决方法
2011-01-10 16:25 9511:Shuffle Error: Exceeded MAX_F ... -
直接使用HADOOP-RPC的编码实例
2010-09-06 17:13 13541、创建接口,该接口类在服务端和客户端都必须有。 publi ... -
mapreduce技术的开源c语言实现
2010-09-03 13:37 1238一、Stanford大学的Phoen ... -
hadoop c++ 扩展
2010-09-03 13:22 1581百度hadoop c++扩展介绍: http://zhaol ... -
hadoop安全
2010-09-03 10:23 926up and running with secure hado ... -
RedHat上安装hadoop+hbase问题记录
2010-08-27 14:16 1272安装在vshpere 虚拟机上,虚拟两台RedHat系统。 ... -
redhat 5.4部署单机伪分布Hadoop集群
2010-08-23 10:53 2440一、所需相关软件版本RedHat enterprise 5.4 ... -
Interpreting the Data:Parallel Analysis with Sawzall(3)
2010-07-12 15:56 110312 性能 虽然Sawzall是解释执行的,但是这不是影响性能 ... -
Interpreting the Data:Parallel Analysis with Sawzall(2)
2010-07-12 15:55 8587.Sawzall语言概览 作为一种查询语言,Sawzall是 ...
相关推荐
HDFS+MapReduce+Hive+HBase十分钟快速入门.pdf
HDFS+MapReduce+Hive+HBase十分钟快速入门,包括这几个部分的简单使用
本资料“HDFS+MapReduce+Hive+HBase十分钟快速入门”旨在帮助初学者迅速理解这些技术的基础概念和应用场景。 **HDFS(Hadoop Distributed File System)**: HDFS是Apache Hadoop项目的核心部分,是一种分布式文件...
通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。通过这一阶段的调研总结,从内部机理的...
《hadoop-HDFS+MapReduce+Hive+Hbase快速入门》,一门入门hadoop的经典书籍,相信能够给学习云计算的大家带来帮助。
标题中的“基于Python+SpringBoot+Vue+HDFS+MapReduce+HBase+Hive+Kafka+Spark”提到了一系列技术,它们都是大数据处理、分布式系统和Web开发的重要组件。接下来,我们将深入探讨这些技术及其在实际项目中的应用。 ...
分布式文件管理系统 Hadoop MapReduce Hive
mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载
基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行 JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 Web...
在大数据领域,构建一个完整的生态系统是至关重要的,其中包括多个组件,如Hadoop、Spark、Hive、HBase、Oozie、Kafka、Flume、Flink、Elasticsearch和Redash。这些组件协同工作,提供了数据存储、处理、调度、流...
在大数据领域,HDFS、Flume、Kafka、Spark、HBase和Hive是关键的组件,它们共同构建了一个高效、可靠的数据处理和分析体系。下面将分别介绍这些技术及其在实际项目中的应用。 1. HDFS(Hadoop Distributed File ...
QJM是一种在Hadoop中实现NameNode HA的关键组件,它通过协调JournalNodes来持久化HDFS的元数据变更,从而在主NameNode故障时能快速切换到备用NameNode。 首先,我们要理解HDFS HA的基本概念。HDFS HA提供了一对活动...
基于Flink+ClickHouse构建的分析平台,涉及 Flink1.9.0 、ClickHouse、Hadoop、Hbase、Kafka、Hive、Jmeter、Docker 、HDFS、MapReduce 、Zookeeper 等技术
【标题】"基于Hadoop的电商销售预测分析系统HDFS+MapReduce"是利用大数据处理框架Hadoop,结合HDFS(Hadoop Distributed File System)分布式文件系统和MapReduce编程模型,进行电商销售数据的预测与分析。...
在构建基于Hadoop的电商销售预测分析系统时,我们主要涉及三个关键技术:HDFS(Hadoop Distributed File System)、MapReduce以及Spring Boot或Spring Cloud。这些技术的集成为大数据处理提供了强大的支持,尤其适用...
可作为java大数据课程设计使用: 详情查看:https://blog.csdn.net/weixin_46115961/article/details/126061076
综上所述,本章内容涵盖了HDFS和MapReduce的基本概念,以及如何在Ubuntu环境中使用Eclipse进行Java开发,实现检查HDFS文件是否存在以及WordCount统计功能。这些知识对于理解和应用Hadoop大数据处理框架至关重要。