本文所用环境为3台hadoop2.2,hbase已经安装完毕,具体安装可参照前两篇文章。
hive适用的元数据库为mysql,所以master上要安装mysql,用系统自带的即可,这里不在详述。
(1)安装hive
- 解压
# tar zvxf hive-0.12.0.tar.gz -C /usr # cd /usr # mv hive-0.12.0 hive
2.替换jar包,保持hbase0.96与hadoop2.2一致
# cd /usr/hive/lib # rm -rf hbase-0.94* # find /usr/hbase/lib -name "hbase*.jar"|xargs -i cp {} ./
重点检查下zookeeper和protobuf的jar包是否和hbase保持一致,如果不一致,
拷贝protobuf.**.jar和zookeeper-3.4.5.jar到hive/lib下。
3.准备mysql当元数据库
拷贝mysql的jdbc jar包mysql-connector-java-5.1.10-bin.jar也拷贝到hive-0.12.0/lib下
拷贝完成后修改权限:
# chmod 777 mysql-connector-java-5.1.10-bin.jar
4.检查hbase与hive连接包是否存在,如果不存在拷贝一个到lib下
# cd /usr/hive/lib # find -name hive-hbase-handler*
5.配置mysql
安装mysql:
# yum install -y mysql mysql-server
安装完成后启动mysql:
# service mysqld start # mysql
mysql相关操作:
①修改root密码:
# update user set password=password(‘hadoop‘) where user=‘root‘;
可自己根据情况修改
②建立数据库hive
# create database hive;
③授权
# grant all on hive.* to ‘root‘@‘%‘ identified by ‘hadoop‘; # flush privileges;
6.修改hive-site.xml配置
此处使用远程配置:
<configuration> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hadoop</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>hdfs://master:8020/hive/warehouse</value> </property> <property> <name>hive.exec.scratchdir</name> <value>hdfs://master:8020/hive/scratchdir</value> </property> <property> <name>hive.querylog.location</name> <value>/usr/hive/logs</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.41.100:3306/hiveMeta?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>hive.aux.jars.path</name> <value>file:///usr/hive/lib/hive-hbase-handler-0.13.0-SNAPSHOT.jar,file:///usr/hive/lib/protobuf-java-2.5.0.jar,file:///usr/hive/lib/hbase-client-0.96.0-hadoop2.jar,file:///usr/hive/lib/hbase-common-0.96.0-hadoop2.jar,file:///usr/hive/lib/zookeeper-3.4.5.jar,file:///usr/hive/lib/guava-11.0.2.jar</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://192.168.41.100:9083</value> </property> </configuration>
注意:
此处配置为连接mysql的账号密码
7.在HDFS上新建目录并授权
# hadoop fs -mkdir /hive/warehouse # hadoop fs -mkdir /hive/scratchdir # hadoop fs -chmod g+w /hive/warehouse # hadoop fs -chmod g+w /hive/scratchdir
这里创建的目录名对应配置文件中的选项:
8.修改其他配置:
①修改hadoop中的hadoop-env.sh
# vim /usr/hadoop/etc/hadoop/hadoop-env.sh
修改如下:
②修改hive中配置
# cd /usr/hive/conf # mv hive-default.xml.template hive-default.xml # mv hive-env.sh.template hive-env.sh # cd /usr/hive/bin # vim hive-config.sh
修改内容如下:
(2)启动hive
1.启动hadoop和hbase
2.启动hive元数据库
# cd /usr/hive/bin # hive --service metastore -hiveconf hive.root.logger=DEBUG,console
元数据库启动后会卡住,放着不管,开启开启另一个终端即可。
3.启动hive
在另一个终端中运行:
# cd /usr/hive/bin # hive
(3)测试
- 分别启动hive和hbase shell
- 查看hive和hbase中,发现没有任何表:
3.在hive中创建表,语句如下:
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");
创建之后分别查看hbase和hive中的变化:
4.通过hbase添加数据后再次查看:
至此说明hive和hbase整合成功。
hbase0.96与hive0.12整合文档,布布扣,bubuko.com