hadoop集群,hbase集群,hive安装

以下安装一定要注意版本问题:安装顺序hadoop,zookeeper,hbase

Hadoop版本:0.20.2

hbase版本:0.20.6tar.gz,在hadoop1上部署master和slave,在其余的节点上部署slave,这样就形成了一个hbase集群。

zookeeper版本:3.4.5.tar.gz,在hadoop2、hadoop3、hadoop4上部署zookeeper。

主机名         IP地址             用途

hadoop1      222.126.190.47         master、regionserver

hadoop2      222.126.190.46         regionserver、zookeeper

hadoop3      192.168.3.67         regionserver、zookeeper

hadoop4      192.168.3.64         regionserver、zookeeper

将目录解压到/usr下面

tar -zxvf /home/hbase-0.20.6.tar.gz -C /usr

接下来在hbase/conf/hbase-env.sh文件添加以下配置:

下面第四行注意这个值为false时,表示启动的是独立的zookeeper。而配置成true则是hbase自带的zookeeper。

export JAVA_HOME=/usr/java/jdk1.7.0_09

export HBASE_HOME=/usr/hbase-0.20.6

export PATH=$PATH:/usr/hbase-0.20.6/bin

export HBASE_MANAGES_ZK=false

export HADOOP_HOME=/usr/hadoop2

修改hbase-site.xml文件

<property>

 <name>hbase.rootdir</name>

 <value>hdfs://master:9000/hbase</value>

 <description>The directory shared by region servers.</description>

 </property>

 <property>

 <name>hbase.cluster.distributed</name>

 <value>false</value>

 </property>

<property>

<name>hbase.zookeeper.property.clientPort</name>

<value>2181</value> //zookeeper集群的端口号 在配置文件zoo.cfg中

</property>

<property>

 <name>hbase.master</name>

 <value>192.168.8.12:60000</value>

 </property>

 <property>

 <name>hbase.zookeeper.quorum</name>

 <value>192.168.8.14,192.168.8.16,192.168.8.18</value> //zookeeper集群所涉及到的IP

 </property> 

hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群

修改regionservers文件,添加以下内容:

hadoop1
hadoop2
hadoop3
hadoop4

修改hbase-default.xml文件(这个不改也行)

注意只修改hbase.rootdir这项,文件位置:/root/hbase/src/main/resources目录下

  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop1:9000/hbase</value>

 </property>

最后再复制到每个节点上面:

scp -r ./hbase-0.20.6  root@192.168.3.65/usr/

最后启动hbase,在主节点有以下Hmater,Hregionserver就算成功

Zookeeper安装

复制zoo_sample.cfg,并且重命名为zoo.cfg
 cp  zoo_sample.cfg  zoo.cfg

接下来再zoo.cfg中添加以下配置:

server.1=hadoop2:2888:3888
server.2=hadoop3:2888:3888
server.3=hadoop4:2888:3888

dataDir=/usr/zookeeper-3.4.5/zookeeperdir  新建zookeeperdir,里面存放的是logs日志,如果没有此文件夹将报错,并且在该zookeeperdir  文件夹下面新建myid文件,编辑myid文件,并在对应的IP的机器上输入对应的编号。如在hadoop2上,myid的内容就是1,在hadoop3上,myid的内容就是2,每台机器上面要一个一个改

zookeeper目录同步到hadoop3、hadoop4机器上

 zookeeper/bin/zkServer.sh start

 

  zookeeper/bin/zkServer.sh status

 

(4)启动客户端测试
启动命令:
bin/zkCli.sh -server 127.0.0.1:2181

显示根目录下、文件:
ls /

创建文件,并设置初始内容:
create /shenjian hello

获取文件内容:
get /shenjian

修改文件内容:
set /shenjian world

删除文件:
delete /shenjian

退出客户端:
quit

整个过程的屏幕截图如下:

启动顺序

1.hadoop

2.zookeeper

3.hbase

4.第二个HMaster

停止顺序

1.第二个HMaster, kill-9删除

2.hbase

3.zookeeper

4.hadoop

注意 一定要按顺序停止,

如果先停zookeeper再停hbase的话,基本停不下来(自己测试结果

Hive安装

tar -zxvf /home/hive-0.8.1.tar.gz -C /usr 先将安装包解压到/usr下面

如果没有hive-site.xml等配置文件,将hive-default.xml.template 复制重命名为hive-site.xml  以及hive-default.xml

修改hive-site.xml  

<property>

  <name>javax.jdo.option.ConnectionDriverName</name>

  <value>com.mysql.jdbc.Driver</value>

  <description>Driver class name for a JDBC metastore</description>

</property> 加载mysql驱动,将derby数据库切换成mysql,

</property>

  <name>javax.jdo.option.ConnectionURL</name>

  <value>jdbc:mysql://192.168.8.12:3306/hivecym?createDatabaseIfNotExist=true</value>

  <description>JDBC connect string for a JDBC metastore</description>

</property>   createDatabaseIfNotExist=true代表自动在mysql数据库中创建hivecym数据库

<property>

  <name>javax.jdo.option.ConnectionUserName</name>

  <value>root</value>

  <description>username to use against metastore database</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionPassword</name>

  <value>root</value>

  <description>password to use against metastore database</description>

</property>

以上这两段配置对应的用户名和密码是mysql中登录的

将hive-envt.sh.template 复制并重命名为hive-env.sh

修改hive-env.sh,添加如下几行

HADOOP_HOME=/data/hadoop-0.20.2

export HIVE_CONF_DIR=/usr/hive-0.8.1/conf

export HIVE_AUX_JARS_PATH=/usr/hive-0.8.1/lib

Hive支持两种数据添加方式:

  1. 导入hdfs上面数据文件到hive表中

 LOAD DATA INPATH "/test/aa.txt" INTO TABLE test;

  1. 查询另一个表中的数据添加到本表中

 INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;

注意:

1.在java中通过jdbc访问hive,需先把以下jar包添加到项目中,并且添加到各个节点hadoop/lib下面,包括master节点

  1. 运行前需要启动hive的Thrift Server

 hive --service hiveserver      

否则报错Could not establish connection to localhost:10000/default: java.net.ConnectException: Connection refused

3.建表时设置的分隔符就是你导入数据时文件的格式

例如:

创建表

create table pokes (no string,name string) row format delimited fields terminated by ',' stored as textfile ;

这里声明的是以’,’为分隔符,假如hdfs上有/test/aa.txt

此时aa.txt的内容应该为

123243,小文

345555,小五

Hbase与hive整合

1.在hive-site.xml中加入以下配置

<property>

  <name>hive.aux.jars.path</name>

  <value>file:///usr/hive-0.8.1/lib/hive-hbase-handler-0.8.1.jar,file:///usr/hive-0.8.1/lib/hbase-0.20.6.jar,file:///usr/hive-0.8.1/lib/zookeeper-3.4.5.jar

</value>

</property>

<property>

  <name>hbase.zookeeper.quorum</name>

  <value>192.168.8.14,192.168.8.16,192.168.8.18,192.168.8.20,192.168.8.22,192.168.8.24,192.168.8.26,192.168.8.28,192.168.8.30</value>

  <description></description>

</property>

<property>

 <name>hbase.master</name>

 <value>192.168.8.12:60000</value>

 </property>

  1. 把hive-hbase-handler-0.8.1.jar加入到各个节点的hadoop/lib下面,包括master

注意:

我的hbase使用的是hbase-0.20.6,所以对应的hive本应该是hive.0.6.x版本的,但因网上更新的很快,现在已经找不到对应的6.x的版本。直接用hive-hbase-handler-0.8.1.jar的话,在hive中创建hbase识别的表的时候会报错,应该是版本不兼容。我自己重新编译了hive-hbase-handler-0.8.1.jar,之后用就没问题了

以下是重新编译hive-hbase-handler-0.8.1.jar的方法

创建项目

1.首先在eclipse中创建一个java project,名字随便取,点击完成;

2.选中src右击import,依次按照下面图的操作,最后点击完成

 

点击完成后你会发现很多地方报错,编译没通过,因为没有导入相关的jar包;

接下来在项目中导入以下jar包

此时应该没有编译错误了,如果还有,直接把代码注释掉。

接下来把项目导出来便是,如下图

至此,hive-hbase-handler重新编译工作已完成,最后把此包拷贝到各个节点的hadoop/lib中去就可以了。

在hive中如果创建的是hbase识别的表,添加的时候不支持导入txt的方式,只能是查询别的表从别的表添加进去。

create table pokes (id int,name string) row format delimited fields terminated by ',' stored as textfile ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi~喜马拉雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值