zoukankan      html  css  js  c++  java
  • Hive_安装部署

    1.Hive官网地址

    http://hive.apache.org/

    2.文档查看地址

    https://cwiki.apache.org/confluence/display/Hive/GettingStarted

    3.下载地址

    http://archive.apache.org/dist/hive/

    4.github地址

    https://github.com/apache/hive

    Hive安装部署

    1.Hive安装及配置

    (1)把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/software目录下

    (2)解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面

    [atguigu@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/

    (3)修改apache-hive-1.2.1-bin.tar.gz的名称为hive

    [atguigu@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive

    (4)修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh

    [atguigu@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh

           (5)配置hive-env.sh文件

           (a)配置HADOOP_HOME路径

    export HADOOP_HOME=/opt/module/hadoop-2.7.2

           (b)配置HIVE_CONF_DIR路径

    export HIVE_CONF_DIR=/opt/module/hive/conf

    2.Hadoop集群配置

    (1)必须启动hdfs和yarn

    [atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh

    [atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

    (2)在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写

    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir /tmp

    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir -p /user/hive/warehouse

    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod g+w /tmp

    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod g+w /user/hive/warehouse

    3.Hive基本操作

    (1)启动hive

    [atguigu@hadoop102 hive]$ bin/hive

    (2)查看数据库

    hive> show databases;

    (3)打开默认数据库

    hive> use default;

    (4)显示default数据库中的表

    hive> show tables;

    (5)创建一张表

    hive> create table student(id int, name string);

    (6)显示数据库中有几张表

    hive> show tables;

    (7)查看表的结构

    hive> desc student;

    (8)向表中插入数据

    hive> insert into student values(1000,"ss");

    (9)查询表中数据

    hive> select * from student;

    (10)退出hive

    hive> quit;

    说明:(查看hive在hdfs中的结构)

    数据库:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹

    表:在hdfs中表现所属db目录下一个文件夹,文件夹中存放该表中的具体数据

    将本地文件导入Hive案例

    需求

    将本地/opt/module/datas/student.txt这个目录下的数据导入到hive的student(id int, name string)表中。

    1.数据准备

    在/opt/module/datas这个目录下准备数据

    (1)在/opt/module/目录下创建datas

    [atguigu@hadoop102 module]$ mkdir datas

    (2)在/opt/module/datas/目录下创建student.txt文件并添加数据

    [atguigu@hadoop102 datas]$ touch student.txt

    [atguigu@hadoop102 datas]$ vi student.txt

    1001   zhangshan

    1002   lishi

    1003   zhaoliu

    注意以tab键间隔。

    2.Hive实际操作

    (1)启动hive

    [atguigu@hadoop102 hive]$ bin/hive

    (2)显示数据库

    hive> show databases;

    (3)使用default数据库

    hive> use default;

    (4)显示default数据库中的表

    hive> show tables;

    (5)删除已创建的student表

    hive> drop table student;

    (6)创建student表, 并声明文件分隔符’ ’

    hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED

     BY ' ';

    (7)加载/opt/module/datas/student.txt 文件到student数据库表中。

    hive> load data local inpath '/opt/module/datas/student.txt' into table student;

    (8)Hive查询结果

    hive> select * from student;

    OK

    1001   zhangshan

    1002   lishi

    1003   zhaoliu

    Time taken: 0.266 seconds, Fetched: 3 row(s)

    3.遇到的问题

    再打开一个客户端窗口启动hive,会产生java.sql.SQLException异常。

    Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException:

     Unable to instantiate

     org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

            at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)

            at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)

            at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)

            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.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

            at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1523)

            at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:86)

            at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:132)

            at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:104)

            at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3005)

            at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3024)

            at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:503)

    ... 8 more

    原因是,Metastore默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore;

    学习中,博客都是自己学习用的笔记,持续更新改正。。。
  • 相关阅读:
    偶串_牛客网
    制造回文_牛客网
    字典树(前缀树)的实现
    动态规划LeetCode174地下城游戏
    动态规划LeetCode64最小路径和
    动态规划LeetCode300最长上升子序列
    动态规划LeetCode120三角形最小路径和
    Zabbix 监控sqlserver
    如何回收VCSA 6自带的vPostgres数据库空间
    领益科技:导出Wireless组中的成员
  • 原文地址:https://www.cnblogs.com/Tunan-Ki/p/11795630.html
Copyright © 2011-2022 走看看