zoukankan      html  css  js  c++  java
  • 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里面取一条数据查看一下

     

  • 相关阅读:
    AFN 控制字符报错(无法解析)
    HTTP POST请求报文格式分析与Java实现文件上传
    xcrun
    Makefile选项CFLAGS,LDFLAGS,LIBS
    Xcode 编译错误
    iOS 11 适配
    机器学习算法之决策树
    Python extend 和 append 的区别
    Python warning_function name should be lowercase
    使用matplotlib绘制导数图像
  • 原文地址:https://www.cnblogs.com/braveym/p/8492529.html
Copyright © 2011-2022 走看看