hadoop-1.0.3+hive-0.9.0+hbase-0.92.0单机伪分布式配置

这段时间已经被hadoop单机伪分布式集群配置折腾得体无完肤了,网上有各种单机集群的分布式配置方法介绍,但是照着做总是会出现这样或那样的问题。虽然道路十分曲折,但是苍天不负有心人,终于还是配置成功了。

言归正传,我配置hadoop集群选用了以下组件:hadoop-1.0.3,hive-0.9.0,hbase-0.92.0,zookeeper-3.4.2,jdk-1.6.33。由于hive与hbase整合时,hive对hbase的版本有要求,所以我直接使用了hive-0.9.0要求的hbase0.92.0版本。当然也可以使用其他版本的hbase数据库,只是需要重新编译hive-hbase-handler-*.jar,我对这个不熟,所以贪了一个便宜,如果对重编译jar包熟悉的同志可以试试。其他的组建可以任选,但是为避免莫名奇妙的错误,最好还是选择与hive要求相近的版本,比如hadoop在1.0.0以上,jdk要求在1.6.0版本以上,有的地方直接使用了openjdk,之前试了一下,发现不行>_<!,zookeeper版本和hbase版本保持一致,也就是看看hbase中lib下的zookeeper版本号。在配置集群时需要使用SSH服务,我直接使用的openssh-server。补充一点,操作系统环境是ubuntu12.04lts。下面说说具体的配置。

1.jdk安装与配置:

下载jdk-6u33-linux-x64.bin,并将其拷贝到/usr/lib/jvm文件夹下,如过lib下没有jvm文件夹,需要自己创建,为什么要这样,我也不清楚。并将其安装在当前目录下。

在/etc/profile的最后添加如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_33

export JRE_HOME=/usr/lib/jvm/jdk1.6.0_33/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

配置完成后,需要重启一下电脑,在终端中输入java --ersion,检测jdk是否安装成功,如果出现jdk相关版本,则成功。

2. hadoop-1.0.3安装与配置

下载hadoop-1.0.3.tar.gz,并将其拷贝到主文件下,我的是home/martin。martin是我的用户名,下同。最好是将用户安装的软件放到主目录下,这样避免了使用root操作带来的文件夹不可访问的问题。

直接使用tar xzvf hadoop-1.0.3安装程序。安装完后,当前文件下会多出一个hadoop-1.0.3的文件夹。你可以修改这个文件夹名,比如修改成hadoop,这样更符合使用习惯。由于我配置时是摸着石头过河,生怕会安装无数个版本的hadoop。

编辑/home/martin/hadoop-1.0.3/conf里的hadoop-env.sh,在该文件最后加入:

export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_33/

export HADOOP_HOME=/home/martin/hadoop-1.0.3

export PATH=$PATH:/home/martin/hadoop-1.0.3/bin

在终端中敲入hadoop-1.0.3/bin/hadoop,键入“enter”键会出现这样一些信息,则表明hadoop基本安装成功。

Usage:hadoop [--config confdir] COMMAND
where COMMAND is one of:
这里省略部分内容
CLASSNAME  run the class named CLASSNAME
Most commands print help when invoked w/o parameters.
1.编辑/home/martin/hadoop-1.0.3/conf/core-site.xml

<configuration>
<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

<description>HDFS's URI, file system://namenode ID:Port</description>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/martin/hadoop-1.0.3/hadooptmp</value>

<description>namenode上本地的hadoop临时文件夹</description>

</property>
</configurtion>

2. 编辑文件/home/dota/hadoop/conf/hdfs-site.xml

<configuration>

<property>
  <name>dfs.name.dir</name>
  <value>/home/martin/hadoop-1.0.3/hdfs/name</value>
  <description>namenode上存储hdfs名字空间元数据</description>
 </property>
 
 <property>
  <name>dfs.data.dir</name>
  <value>/home/martin/hadoop-1.0.3/hdsf/data</value>
  <description>datanode上数据块的物理存储位置</description>
 </property>
 
 <property>
  <name>dfs.replication</name>
  <value>1</value>
  <description>num of replication</description>
 </property>

</configuration>
3.编辑/home/martin/hadoop-1.0.3/conf/mapred-site.xml

<configuration>

<property>
  <name>mapred.job.tracker</name>
  <value>localhost:9001</value>
  <description>jobtracker ID:Port, not URI</description>
 </property>

 <property>
  <name>mapred.local.dir</name>
  <value>/home/martin/hadoop-1.0.3/mapred/local</value>
  <description>tasktracker上执行mapreduce程序时的本地目录</description>
 </property>

 <property>
  <name>mapred.system.dir</name>
  <value>/tmp/hadoop/mapred/system</value>
  <description>这个是hdfs中的目录,存储执行mr程序时的共享文件</description>
</property>

</configuration>
hadoop基本配置完成。在终端中键入hadoop-1.0.3/bin/hadoop namenode -format,没有出现错误提示则成功。

启动hadoop集群,终端键入

hadoop-1.0.3/bin/start-all.sh

出现以下一些信息

Warning: $HADOOP_HOME is deprecated.


starting namenode, logging to /home/martin/hadoop-1.0.3/logs/hadoop-martin-namenode-ubuntu.out
localhost: Warning: $HADOOP_HOME is deprecated.
localhost:
localhost: starting datanode, logging to /home/martin/hadoop-1.0.3/logs/hadoop-martin-datanode-ubuntu.out
localhost: Warning: $HADOOP_HOME is deprecated.
localhost:
localhost: starting secondarynamenode, logging to /home/martin/hadoop-1.0.3/logs/hadoop-martin-secondarynamenode-ubuntu.out
starting jobtracker, logging to /home/martin/hadoop-1.0.3/logs/hadoop-martin-jobtracker-ubuntu.out
localhost: Warning: $HADOOP_HOME is deprecated.
localhost:
localhost: starting tasktracker, logging to /home/martin/hadoop-1.0.3/logs/hadoop-martin-tasktracker-ubuntu.out
查看jps,则可见如下几项。
jpmartin@ubuntu:~$ jps
3452 Jps
3050 JobTracker
2956 SecondaryNameNode
3402 TaskTracker
2222 NameNode
2593 DataNode
使用hadoop前需要格式化namenome,在终端中输入
hadoop-1.0.3/bin/hadoop fs -put conf路径(这里是conf文件夹的路径,我的是/home/martin/hadoop-1.0.3/conf,最好给出绝对路径) input
hadoop-1.0.3/bin/hadoop fs -ls
如果没有出现错误提示,则表明成功了,否则查看配置是否有错。

3.ssh服务安装与配置

在终端键入:

sudo apt-get install openssh-server

安装完成后,配置SSH无密码连接

$ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa

$cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$chmod 400 ~/.ssh/authorized_keys

输入ssh localhost后有如下内容:

Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

0 packages can be updated.
0 updates are security updates.

Last login: Fri Aug 24 11:14:20 2012 from localhost
表示ssh服务安装成功。

4.hbase安装与配置

将hbase-0.92.0.tar.gz拷贝到主文件下,也就是hadoop-1.0.3的位置。在终端输入

tar xzvf hbase-0.92.1.tar.gz

此时会得到hbase-0.92.0的文件夹。打开hbase-0.92.0下的conf文件,配置hbase数据库

打开hbase-env.sh文件,在末尾添加

export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_33
export HBASE_HOME=/home/martin/hbase-0.92.0
export PATH=$PATH:/home/martin/hbase-0.92.0/bin

打开hbase-site.xml文件,加入

<configuration>

<property>  
    <name>hbase.rootdir</name>  
    <value>file:///home/martin/hbase-0.92.0</value>  
</property>
 
<property>  
    <name>hbase.cluster.distributed</name>  
    <value>true</value>  
</property>

<property>  
    <name>hbase.zookeeper.quorum</name>  
    <value>localhost</value>  
</property>

<property>  
    <name>zookeeper.session.timeout</name>  
    <value>60000</value>  
</property>  
<property>  
    <name>hbase.zookeeper.property.clientPort</name>  
    <value>2181</value>  
</property>
</configuration>

重启电脑,启动hbase服务,在终端键入

hbase-0.92.0/bin/start-hbase.sh

屏幕会出现

martin@ubuntu:~$ hbase-0.92.0/bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.92.0, r1231986, Mon Jan 16 13:16:35 UTC 2012

hbase(main):001:0>

查看hbase是否可用,可键入

status

屏幕出现

1 servers, 0 dead, 4.0000 average load
这表明hbase数据库可用,继续进行。。。

 

5.zookeeper安装与配置

下载zookeeper-3.4.2.tar.gz,这个软件包是hbase要求的版本号,为了避免莫名奇妙的错误,我尽量采用相关的版本号。特别说明一下,hive-0.9.0要求的zookeeper版本号是3.4.3,但是我使用的是3.4.2,不过也没有出错,也就没有管了。

终端中键入

tar xzvf zookeeper-3.4.2

安装完成后,打开zookeeper-3.4.2文件夹下的conf文件夹,里面有3个文件,将zoo-sample.cfg更名为zookeeper.cfg,内容不做任何改动。

 

6.hive安装与配置

 下载hive-0.9.0.tar.gz,原本想使用hive-0.8.1的,结果0.8.1版本需要的hbase版本为0.8.9,找了半天都没有找到,最后就选择了0.9.0版本。

在终端键入

tar xzvf hive-0.9.0.tar.gz,同前一样,不做更名处理。打开hive-0.9.0下的conf文件夹,做如下配置:

将conf中的hive-default.xml.sample以及hive.sh.sample改为hive-default.xml和hive-env.sh,并把hive-default.xml复制并重命名为hive-site.xml.

在hive-env.sh最后添加

export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_33

export HIVE_HOME=/home/martin/hive-0.9.0

export PATH=$PATH:/home/martin/hive-0.9.0/bin

export HADOOP_HOME=/home/martin/hadoop-1.0.3

打开hive-site.xml,在最后添加

<property>
 <name>hive.exec.scratchdir</name>  
 <value>/home/martin/hive-0.9.0/tmp</value>  
 
</property>  

   
<property>  
  <name>hive.querylog.location</name>  
  <value>/home/martin/hive-0.9.0/logs</value>  
</property>  
   
<property>
  <name>hive.aux.jars.path</name>  
  <value>file:///home/martin/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,file:///home/martin/hive-0.9.0/lib/hbase-0.92.0.jar,file:///home/martin/hive-0.9.0/lib/zookeeper-3.4.2.jar</value>     
</property>

在终端键入
hive-0.9.0/bin/hive start

出现一下信息

martin@ubuntu:~$ hive-0.9.0/bin/hive start
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in jar:file:/home/martin/hive-0.9.0/lib/hive-common-0.9.0.jar!/hive-log4j.properties
Hive history file=/home/martin/hive-0.9.0/logs/hive_job_log_martin_201208271000_1268040863.txt
hive>

键入show tables,可以查看hive中已有的数据表。

7.配置伪分布式

删除hive-0.9.0/lib下原有的hbase-0.92.0.jar包,拷贝hbase-0.92.0下hbase-0.92.0.jar包到hadoop-1.0.3/lib和hive-0.9.0/lib下,将zoopeeker-3.4.2文件夹下的zookeeper-3.4.2拷贝到hive-0.9.0/lib和hbase-0.92.0/lib下,删除hbase-0.92.0/lib中原有的zookeeper-3.4.2.jar包和hive-0.9.0/lib下的zookeeper-3.4.3.jar包。并将hbase-0.92.0/conf/hbase-site.xml拷贝到hadoop-1.0.3/conf下。编辑/etc/hosts文件,将127.0.1.1所在行更改注释掉,另起一行,将刚刚注释的那行复制下来,去掉注释符,并将127.0.1.1修改为127.0.0.1,其他内容不用修改。

按照如下顺序启动集群相关服务

hadoop-1.0.3/bin/start-all.sh

hbase-0.92.0/bin/start-hbase.sh

hive-0.9.0/bin/hive start

此时用jps查看可以得到如下信息

4916 RunJar
3974 HMaster
9241 Jps
3050 JobTracker
2956 SecondaryNameNode
3402 TaskTracker
2222 NameNode
2593 DataNode
3893 HQuorumPeer
4310 HRegionServer
5370 Main
如果缺少某些服务,可能会使hive和hbase的整合不成功。注:启动hive后,不要急忙推出,否则可能看不到Runjar,Main服务。

启动hive服务后,输入

CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");
如果没有报错,则hive和hbase的整合成功了。如果出现namenode in sage mode的提示,则使用

 hadoop-1.0.3/bin/hadoop dfsadmin -safemode leave
关闭安全模式,再使用就可以了

 

 

 

 

 

 

转载于:https://www.cnblogs.com/pcchinadreamfly/archive/2012/08/27/2658165.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值