美文网首页
Hive源码学习——本地环境搭建

Hive源码学习——本地环境搭建

作者: 僕名前 | 来源:发表于2021-12-07 16:55 被阅读0次

    由于自己想知道HiveSQL编译成MapReduce的具体过程,在面试中也有面试官问到了这个问题,所以准备花一段时间看一下底层对应的源码。
    我使用的是hive版本2.3.7,hadoop版本2.8.5

    源码编译

    首先使用git clone hive源码

    git clone https://github.com/apache/hive.git
    

    根据自己的环境配置选择相应的分支

    查看所有分支 :git branch -a 
    查看当前使用分支: git branch 
    切换分支 :git checkout 分支名
    

    或者下载hive的包,我下载的是hive-2.3.7的包:

    https://codeload.github.com/apache/hive/tar.gz/refs/tags/rel/release-2.3.7
    

    切换到hive源码的根目录,然后输入以下命令

    mvn clean package -DskipTests -Phadoop-2 -Pdist #跳过测试 
    mvn clean package -Pdist -DskipTests #如果显示Hadoop依赖问题报错则可以去掉Hadoop项 
    mvn clean package -DskipTests -Dmaven.javadoc.skip=true #跳过文档生成
    

    编译成功的界面如下:


    image.jpeg

    可能遇到的问题:

    1.pentaho-aggdesigner-algorithm:jar缺失

    image.jpeg

    根本原因是阿里云镜像jar包索引不明,按照其他方法提供的更改POM文件中spring镜像仓库依然无法下载jar包,可以手动下载安装,也可以尝试将还原maven默认的仓库地址

    mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar -Dfile=pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar(jar绝对路径)
    

    2.Java环境问题

    在命令行我输入java命令是正常执行的,输入echo $JAVA_HOME也是可以正确输出JAVA_HOME路径,但是执行编译命令一直报错JAVA_HOME没有正确设置


    image.jpeg

    可以在命令行显式的设置JAVA_HOME,我的是Mac,Windows填写自己配置的路径即可

    set  JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home
    

    打包成功以后,在/hive-rel-release-2.3.7/packaging/target可以找到编译好的hive包


    image.jpeg

    环境准备

    Hadoop环境以及MySQL

    由于Hive运行依赖Hdfs存储真实数据和MySQL存储元数据(模拟生产场景,不使用默认的derby)

    在这里不再复述相关环境的搭建与配置,默认Hadoop和MySQL已经配置好了

    Hive环境配置

    使用命令生成hive-site.xml文件

    cp hive-default.xml.template hive-site.xml
    vim hive-site.xml
    <!-- 需要修改的配置如下:-->
      <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:MySQL://localhost1:3306/hive?useSSL=false&amp;characterEncoding=UTF-8</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>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
      </property>
      <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
      </property>
        <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
        <description>password to use against metastore database</description>
      </property>
       <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
        <description>
          Enforce metastore schema version consistency.
          True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic
                schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
                proper metastore schema migration. (Default)
          False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
        </description>
      </property>
       <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
        <description>Whether to include the current database in the Hive prompt.</description>
      </property>
       <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
        <description>Whether to print the names of the columns in query output.</description>
      </property>
    

    对文件hive-env.sh进行编辑,找到HADOOP_HOME,对其更改成我们自己的Hadoop目录。

    HADOOP_HOME=/Users/yanhaowen/bigdata_tools/hadoop-2.8.5
    

    hive-site.xml的默认配置项有些多,如果直接找我们想要修改的配置,不是很容易,所以我们可以使用vim的快速查找功能

    1.按esc退出insert 
    2./+想要查找的内容,回车 
    例如:/JDBC 回车,就会定位到文件中的JDBC的地方 
    如果有多个匹配成功的,可以通过n或N进行上一个或下一个的匹配
    

    由于使用的是MySQL数据库存储元数据,需要添加mysql相应jar包到lib目录下

    例如:mysql-connector-java-5.1.49-bin.jar

    配置完成后,初始化hive服务

    bin/schematool -dbType mysql -initSchema
    

    如果初始化过程中遇到问题,那么可以使用下面的命令来查看详细信息:

    schematool -dbType mysql -initSchema --verbose
    

    完成后,启动元数据服务

    nohup hive --service metastore &
    
    image.jpeg

    也可以通过命令查看hive服务

    ps -ef |grep hive
    

    然后启动hive客户端,最简单的启动hive脚本

    image.jpeg

    然后启动hive客户端,最简单的启动hive脚本

    image.jpeg

    至此,本地环境搭建完成。

    参考:

    https://blog.51cto.com/u_15069475/3935761

    https://blog.csdn.net/king14bhhb/article/details/111568313

    相关文章

      网友评论

          本文标题:Hive源码学习——本地环境搭建

          本文链接:https://www.haomeiwen.com/subject/oflaxrtx.html