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里面取一条数据查看一下

     

  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Mysql 使用 select into outfile
    Mysql 使用CMD 登陆
    使用Clean() 去掉由函数自动生成的字符串中的双引号
    Get Resultset from Oracle Stored procedure
    获取引用某个主键的所有外键的表
    Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”
    添加MySql Metat Database 信息
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
  • 原文地址:https://www.cnblogs.com/braveym/p/8492529.html
Copyright © 2011-2022 走看看