好玩的大数据之17:Hive安装(Hive-3.1.2)

一、简介


hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数据仓库的统计分析和Windows注册表文件。(摘自百度百科)

二、下载


下载地址:http://hive.apache.org/

下载得到:apache-hive-3.1.2-bin.tar.gz

Hive首页

从下面可以看到,3.1.2可以兼容Hadoop3.x.x

下载页面

选择清华下载点

选择清华下载点

选3.1.2

选3.1.2
选bin文件

三、安装


        tar zxvf apache-hive-3.1.2-bin.tar.gz -C /mylab/soft

四、配置

    这个配置是最麻烦的一个,请客观一定要耐心一点,耐心一点、再耐心一点


    1.修改环境变量

            修改~/.bashrc

                    vi ~/.bashrc

                        #hive 3.1.2

                        export HIVE_HOME=/mylab/soft/apache-hive-3.1.2-bin

                        export PATH=$PATH:$HIVE_HOME/bin                        

                        export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib

                    source ~/.bashrc

    2.为hive配置mysql

            创建新用户

                    CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';

            创建数据库

                    create database hive;

            查看全部用户

                    SELECT user, host FROM mysql.user;

            用户授权

                    GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' with grant option;

            刷新权限

                    flush privileges;

            显示MySQL用户帐户权限

                    SHOW GRANTS FOR 'hive'@'%';

            测试登录

                    mysql -u hive -p hive

    3.修改hbase配置文件

        a) 创建工作目录

注:在配置文件中要用到的目录,有些我也搞不清楚干啥的,反正看到有目录的地方,我都给它配上一个目录,且都放在$HIVE_HOME/working下,并给$HIVE_HOME/working及所有子目录授予读写属性

mkdir -p $HIVE_HOME/working/exec.scratchdir

mkdir -p $HIVE_HOME/working/repl.rootdir

mkdir -p $HIVE_HOME/working/repl.cmrootdir

mkdir -p $HIVE_HOME/working/replica.functions.root

mkdir -p $HIVE_HOME/working/local.scratchdir

mkdir -p $HIVE_HOME/working/downloaded.resources

mkdir -p $HIVE_HOME/working/metastore.warehouse

mkdir -p $HIVE_HOME/working/replica.functions.root

mkdir -p $HIVE_HOME/working/operation.log

mkdir -p $HIVE_HOME/working/querylog

mkdir -p $HIVE_HOME/working/logs

chmod 777 -R $HIVE_HOME/working

   b) 复制mysql-connector-java        

        为了省事,直接复制mysql-connector-java-8.0.15.jar到$HIVE_HOME/lib

        cp /usr/share/java/mysql-connector-java-8.0.21.jar $HIVE_HOME/lib

        或者

        ln -s /usr/share/java/mysql-connector-java-8.0.21.jar $HIVE_HOME/lib/mysql-connector-java-8.0.21.jar

        要是不确定在哪个目录下,用find命令找

         sudo find / -name mysql-connector-java-8.0.21.jar

   c) 修改hive-env.sh

        这个需要从模板文件里复制

        cp $HIVE_HOME/conf/hive-env.sh.template  $HIVE_HOME/conf/hive-env.sh

        vi $HIVE_HOME/conf/hive-env.sh

            HADOOP_HOME=/mylab/soft/hadoop-3.2.1

            export HIVE_CONF_DIR=/mylab/soft/apache-hive-3.1.2-bin/conf

            export HIVE_AUX_JARS_PATH=/mylab/soft/apache-hive-3.1.2-bin/lib

   c) 修改hive-site.xml

            这个需要从模板文件里复制(这个模板文件名起的有点坑)

            cp $HIVE_HOME/conf/hive-default.xml.template   $HIVE_HOME/conf/hive-site.xml

            这个配置文件比较长,所以参见附录hive-site.xml

   d) 去掉hive-site.xml里的一个特殊字符

<property>

    <name>hive.txn.xlock.iow</name>

    <value>true</value>

    <description>

      Ensures commands with OVERWRITE (such as INSERT OVERWRITE) acquire Exclusive locks for&#8;transactional tables.  This ensures that inserts (w/o overwrite) running concurrently

      are not hidden by the INSERT OVERWRITE.

    </description>

  </property>

    把这个for&#8 去掉

        e) 修复hive的bug

            将$HIVE_HOME/bin/hive文件放到share共享目录里,利用windows的notepad打开它,然后把所有的“file://”替换为“file:///”(三个反斜杠,为啥会有这种错误)

            改完后放回到$HIVE_HOME/bin下

        f) 解决guava库版本冲突

                ls /mylab/soft/hadoop-3.2.1/share/hadoop/common/lib/guava*

                        guava-27.0-jre.jar

                ls /mylab/soft/apache-hive-3.1.2-bin/lib/guava*

                        guava-19.0.jar

                删除掉hive下低版本的,复制Hadoop下高版本的到$HIVE_HOME/lib目录

                    rm /mylab/soft/apache-hive-3.1.2-bin/lib/guava-19.0.jar

                    cp /mylab/soft/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar /mylab/soft/apache-hive-3.1.2-bin/lib

          到https://mvnrepository.com/artifact/com.google.guava/guava

           找最新的替换也行

        f) hive-log4j2.properties

 cp $HIVE_HOME/conf/hive-log4j2.properties.template   $HIVE_HOME/conf/hive-log4j2.properties

         g) 修改hive-exec-log4j2.properties

cp $HIVE_HOME/conf/hive-exec-log4j2.properties.template $HIVE_HOME/conf/hive-exec-log4j2.properties


五、验证


        终于可以运行一把了

        格式化数据库

                schematool -dbType mysql -initSchema

        启动hive服务

                hive --service metastore > $HIVE_HOME/working/logs/metastore.log 2>&1 &

        启动hiveserver2服务

                hive --service hiveserver2 > $HIVE_HOME/working/logs/hiveserver2.log 2>&1 &

        或者交互模式

                hive --service metastore

                hive --service hiveserver2

                jps

        查看hive进程

            普通型

                    ps -ef | grep hive 

            精简型(命令很复杂,但结果很精简,输出为:linux用户名 进程ID)    

                    ps -ef | grep hive | grep -v grep | awk '{print $1 " " $2}'

        启动客户端

                方法1

                        hive

                方法2

                                beeline -u jdbc:hive2://master:10000 -n root

                                beeline

                                        !connect  jdbc:hive2://master:10000 -n root

                                退出beeline

                                        !exit

                查看hiveserver2(默认10000端口)

                                netstat -tulnp | grep 10000

                beeline使用详见

                https://www.cnblogs.com/lenmom/p/11218807.html

                https://www.cnblogs.com/xinfang520/p/7684598.html

        停止hive服务

            只能kill掉

            普通型

                        ps -ef | grep hive

                        kill    -9  <pid>

            精简型(命令很复杂,但一剑封喉)     

                        ps -ef | grep hive | grep -v grep | awk '{print "kill -9 " $2}' | sh        

六、附录


    1.hive-site.xml

<property>

    <name>hive.metastore.uris</name>

    <value>thrift://master:9083</value>

    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>

  </property>

<property>

    <name>hive.exec.scratchdir</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/scratchdir</value>

    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>

  </property>

<property>

    <name>hive.repl.rootdir</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/repl.rootdir</value>

    <description>HDFS root dir for all replication dumps.</description>

  </property>

<property>

    <name>hive.repl.cmrootdir</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/repl.cmrootdir</value>

    <description>Root dir for ChangeManager, used for deleted files.</description>

  </property>

<property>

    <name>hive.repl.replica.functions.root.dir</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/repl.replica.functions</value>

    <description>Root directory on the replica warehouse where the repl sub-system will store jars from the primary warehouse</description>

  </property>

<property>

    <name>hive.exec.local.scratchdir</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/local_scratchdir</value>

    <description>Local scratch space for Hive jobs</description>

  </property>

<property>

    <name>hive.downloaded.resources.dir</name>

<value>/mylab/soft/apache-hive-3.1.2-bin/working/downloaded.resources/${hive.session.id}_resources</value>

    <description>Temporary local directory for added resources in the remote file system.</description>

  </property>

<property>

    <name>hive.metastore.warehouse.dir</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/metastore.warehouse</value>

    <description>location of default database for the warehouse</description>

  </property>

<property>

    <name>hive.aux.jars.path</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/lib</value>

    <description>The location of the plugin jars that contain implementations of user defined functions and serdes.</description>

  </property>

<property>

    <name>hive.querylog.location</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/querylog</value>

    <description>Location of Hive run time structured log file</description>

  </property>

<property>

    <name>hive.server2.logging.operation.log.location</name>

    <value>/mylab/soft/apache-hive-3.1.2-bin/working/operation_log</value>

    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>

  </property>

<property>

    <name>javax.jdo.option.ConnectionURL</name>

    <!-- <value>jdbc:derby:;databaseName=metastore_db;create=true</value> -->

    <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>

    <description>

      JDBC connect string for a JDBC metastore.

      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.

      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.

    </description>

  </property>

<property>

    <name>javax.jdo.option.ConnectionDriverName</name>

    <!-- <value>org.apache.derby.jdbc.EmbeddedDriver</value> -->

    <value>com.mysql.cj.jdbc.Driver</value>

    <description>Driver class name for a JDBC metastore</description>

  </property>

<property>

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>hive</value>

    <description>Username to use against metastore database</description>

  </property>

<property>

    <name>javax.jdo.option.ConnectionPassword</name>

    <value>hive</value>

    <description>password to use against metastore database</description>

  </property>

<property>

    <name>hive.server2.thrift.bind.host</name>

    <value>master</value>

    <description>Bind host on which to run the HiveServer2 Thrift service.</description>

  </property>

<property>

                <name>hive.server2.thrift.port</name>

                <value>10000</value>

                <description>TCP port number to listen on, default 10000</description>

        </property>

        <property>

                <name>hive.metastore.event.db.notification.api.auth</name>

                <value>false</value>

        </property>

<property>

                <name>hive.cli.print.header</name>

                <value>true</value>

        </property>

        <property>

                <name>hive.cli.print.current.db</name>

                <value>true</value>

        </property>


2.参考

https://blog.csdn.net/weixin_43824520/article/details/100580557

https://blog.csdn.net/weixin_45883933/article/details/106843035

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335