百里登风

导航

Hive与HBase集成进行数据分析

 

 

 

 

 

 

我们把hive的安装包上传的节点3来

 

解压

 

 

 

 

现在我们还是老规矩通过notopad++来连接我们的虚拟机来配置文件,把下面这两个文件重命名一下

 

 

 

修改这个文件

 

 

 

对hive-env.sh我们修改这里

 

 

 

下面我们在HDFS下创建目录,这个可以在任何一个节点下创建都可以,我这里就在节点2下创建了

 

给这个目录赋予权限

 

 

 配置完之后我们启动一下hive

 

 

 

 把这段内容删除掉

 

 从这里开始一直到下面

到最后的这里我们都把他删除掉

 

然后也是从这里开始到下面

 

到下面也删除掉

 

最后留下这些内容

 

修改配置一下

 

 

 

 

 

 

 

 

 

 

 

创建表格

 

 我们创建一个文件

 

把刚刚创建的文件数据加载到test表里面去

 

可以看到报错了!!!

 

 

 http://bigdata-pro01.kfk.com:8088/

 成功了!

 

可以看到并没有创建metastore数据库

现在发现配置文件出现了一个小错误

 

 这个文件的名字没有修改

 

 

 

 重新运行一下Hive

 

 

我们重新创建一个表

 

 

在mysql下查看

 

 

回到hive界面我们把数据导入到表dept中

 

把这段复杂过来到hive-site.xml

 

 

 

修改一下配置

 

然后我们重启hive

 

 

 

 

在hive-site.xml下加上这么一句

 

 

 

 

因为我这里用的是cdh版本的所以我就不需要导包了

 

 

 可以看到报错了!!

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/hbase/HBaseConfiguration

 

 

 

怎么解决呢

首先通过用下面的命令,重新启动hive
./hive -hiveconf hive.root.logger=DEBUG,console 进行debug
查看到错误原因

调遣hbase包错误,配置文件不能加载。

将hbase目录下jar包拷贝到hadoop/lib下,(注意了我这里为了保险起见3个节点都做了这一步)

然后修改hive的配置文件,使hbase的lib包生效

 

重启一下hive,再次建表

成功!!!

 

将hbase的9个包拷贝到hive/lib目录下

 

export HBASE_HOME=/opt/modules/hbase-0.98.6-cdh5.3.0

 

export HIVE_HOME=/opt/modules/hive-0.13.1/lib

 

 

ln -s $HBASE_HOME/lib/hbase-server-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-server-0.98.6-cdh5.3.0.jar

 

 

 

ln -s $HBASE_HOME/lib/hbase-client-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-client-0.98.6-cdh5.3.0.jar

 

 

 

ln -s $HBASE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.0.jar

 

 

 

ln -s $HBASE_HOME/lib/hbase-it-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-it-0.98.6-cdh5.3.0.jar

 

 

 

ln -s $HBASE_HOME/lib/htrace-core-2.04.jar$HIVE_HOME/lib/htrace-core-2.04.jar

 

 

 

ln -s $HBASE_HOME/lib/hbase-hadoop2-compact-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-hadoop2-compact-0.98.6-cdh5.3.0.jar

 

 

 

ln -s $HBASE_HOME/lib/hbase-hadoop-compact-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-hadoop-compact-0.98.6-cdh5.3.0.jar

 

 

 

ln -s $HBASE_HOME/lib/high-scale-lib-1.1.1.jar $HIVE_HOME/lib/high-scale-lib-1.1.1.jar

 

 

 

ln -s $HBASE_HOME/lib/hbase-common-0.98.6-cdh5.3.0.jar $HIVE_HOME/lib/hbase-common-0.98.6-cdh5.3.0.jar

 

我在这里说一下,最好还是用工具手动导过来把,直接用上面的语句会出错的

 

 

结果报错了,查看日志

2018-03-09 04:49:05,535 INFO  [main]: ql.Driver (Driver.java:compile(446)) - Semantic Analysis Completed
2018-03-09 04:49:05,643 INFO  [main]: ql.Driver (Driver.java:getSchema(245)) - Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:weblogs.id, type:string, comment:null), FieldSchema(name:weblogs.datatime, type:string, comment:null), FieldSchema(name:weblogs.userid, type:string, comment:null), FieldSchema(name:weblogs.searchname, type:string, comment:null), FieldSchema(name:weblogs.retorder, type:string, comment:null), FieldSchema(name:weblogs.cliorder, type:string, comment:null), FieldSchema(name:weblogs.cliurl, type:string, comment:null)], properties:null)
2018-03-09 04:49:05,643 INFO  [main]: ql.Driver (Driver.java:execute(1243)) - Starting command: select * from weblogs
2018-03-09 04:49:05,659 INFO  [main]: ql.Driver (SessionState.java:printInfo(556)) - OK
2018-03-09 04:49:06,260 ERROR [main]: CliDriver (SessionState.java:printError(565)) - Failed with exception java.io.IOException:java.io.IOException: java.lang.reflect.InvocationTargetException
java.io.IOException: java.io.IOException: java.lang.reflect.InvocationTargetException
    at org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:634)
    at org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:532)
    at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:137)
    at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1570)
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:289)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:221)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:431)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:800)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:694)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:633)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.io.IOException: java.lang.reflect.InvocationTargetException
    at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:413)
    at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:390)
    at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:271)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:198)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:175)
    at org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat.getSplitsInternal(HiveHBaseTableInputFormat.java:368)
    at org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat.getSplits(HiveHBaseTableInputFormat.java:358)
    at org.apache.hadoop.hive.ql.exec.FetchOperator.getRecordReader(FetchOperator.java:413)
    at org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:559)
    ... 15 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:411)
    ... 23 more
Caused by: java.lang.NoClassDefFoundError: org/cloudera/htrace/Trace
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:216)
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
    at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:839)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:642)
    ... 28 more
Caused by: java.lang.ClassNotFoundException: org.cloudera.htrace.Trace
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 34 more

 

 

重点看这里

 

 

 这个错误的意思是

缺少 htrace-core-2.04.jar

 到hive的lib目录下查看一下

发现这个包是有的,但是有问题,现在把这个坏的包删掉,再到Hbase的lib下把一个好的拷贝过来。

 

现在这个正常了

再select * from weblogs;

 

 可以看到数据映射过来了

 

 

 

 

 

下面是补充内容

 

 

 

这个时候检查mysql是否启动了,保存mysql是启动状态

先启动hiveserver2

 

 然后再新建一个远程连接窗口

启动beeline

 

 

#查看前10条数据

select * from weblogs limit 10;

 

在hbase里面取一条数据查看一下

 

 

posted on 2018-03-09 16:59  百里登峰  阅读(512)  评论(0编辑  收藏  举报