zoukankan      html  css  js  c++  java
  • 安装Hive2及配置HiveSever2

    安装Hive及配置HiveSever2

    Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,使查询和分析方便。

    1.安装配置hive

    这里使用的是hive-2.3.7版,下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
    下载后使用filezilla上传虚拟机并解压命令:tar -zxvf 要解压的文件名
    配置环境变量 vi /etc/profile #追加以下内容

    export HIVE_HOME=hive文件路径
    export PATH=$PATH:$HIVE_HOME/bin
    

    配置后使用 source /etc/profile #更新源

    进入到hive的conf目录下

    (1).配置配置hive-env.sh文件,但是并没有,我们需要把hive-env.sh.template拷贝一份

    cp hive-env.sh.template hive-env.sh
    
    vi hive-env.sh     #追加以下内容
    
    export JAVA_HOME=/opt/jdk1.8.0_161   #这里写你的配置jdk的路径
    export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.7.0   #这里写你的配置hadoop的路径
    

    (2).配置hive-site.xml(需要创建)

    touch hive-site.xml
    
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://192.168.56.2:3306/hive?useSSL=false&amp;createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
        </property>
    <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>root</value> 		# mysql用户
        </property>
    <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>123456</value>	# mysql密码
        </property>
    
        <property>
            <name>datanucleus.schema.autoCreateAll</name>
            <value>true</value>
        </property>
    
    
    </configuration>
    

    *注意在上面配置中 useSSL=false 解决SSL警告(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议,设置useSSL = true并为服务器证书验证提供信任库。
    配置文件是 .XML 格式,而在xml文件中&amp;才表示&。

    property标签的内容意义如下:

    配置参数 值配置 注解
    javax.jdo.option.ConnectionURL jdbc:mysql://<host name>/<database name>?createDatabaseIfNotExist=true 元数据存储在mysql服务器中
    javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver mysql jdbc驱动程序类
    javax.jdo.option.ConnectionUserName <user name> 连接到MySQL server的用户名
    javax.jdo.option.ConnectionPassword <password> 连接到MySQL server的密码
    datanucleus.schema.autoCreateAll true/false 自动生成设置表

    (3).将mysql驱动包 mysql-connector-java-5.1.45-bin.jar 导入hive的lib下

    注意在mysql里创建hive并赋权(配置mysql请参考:https://www.cnblogs.com/A-Nan-q/p/14164177.html)

    (4).启动Hadoop 使用schematool 初始化hive的元数据

    schematool -initSchema -dbType mysql
    
    如果安全模式则,只要在Hadoop的目录下输入:bin/hadoop dfsadmin -safemode leave
    

    初始化失败原因有很多,如配置文件是否无误,mysql里的hive数据库等等..

    (5).启动hive

    hive (因为在/etc/profile中配置过$HIVE_HOME所以可以直接使用have启动)
    

    启动报错1

    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/opt/hive-2.3.7/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    

    错误原因log4j冲突,删掉一个

    rm -r /opt/hive-2.3.7/lib/log4j-slf4j-impl-2.6.2.jar

    启动报错2

    Logging initialized using configuraion in file:/opt/hive-2.3.7/conf/hive-log4j2.properties Async: true
    Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Call From wuya/192.168.56.2 to wuya:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
    	at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:610)
    	at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:553)
    	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:750)
    	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    	at org.apache.hadoop.util.RunJar.main(RunJar.java:136
    

    错误原因 hadoop未启动

    2.配置HiveSever2

    hiveserver 在老版本中还能使用,但现在的新版本已经不在支持 1.2开始就不再支持,hiveserver2 为了区分新老版本,名字就叫做hiveserver2。

    hive配置成功后配置hiveserver2需要:

    1.进入hive的conf的目录下配置hive-site.xml

     <!-- 这是hiveserver2 -->
      <property>
         <name>hive.server2.thrift.port</name>
         <value>10000</value>
      </property>
    
      <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>127.0.0.1</value>
      </property>
    

    **2.hadoop的配置也需要修改 core-site.xml **

    注意:如果是hadoop集群而不是单机版,需要更改所有虚拟机上的core-site.xml文件

    vi /hadoop安装路径/etc/hadoop/core-site.xml

    <!-- 如果连接不上10000 -->
      <property>     
        <name>hadoop.proxyuser.root.hosts</name>     
        <value>*</value>
      </property> 
      <property>     
        <name>hadoop.proxyuser.root.groups</name>    
        <value>*</value> 
      </property>
      <property>     
        <name>hadoop.proxyuser.master.hosts</name> #master配置的主机名 hostname命令查看主机名
        <value>*</value> 
      </property> 
      <property>     
        <name>hadoop.proxyuser.master.groups</name>     #master配置的主机名
        <value>*</value> 
      </property>
      <property>     
        <name>hadoop.proxyuser.hive.hosts</name>     
        <value>*</value> 
      </property> 
      <property>     
        <name>hadoop.proxyuser.hive.groups</name>     
        <value>*</value> 
      </property>
    

    3.测试

    首先启动你集群中的Zookeeper和Hadoop

    然后在安装hive的主机上启动hiveserver2

    [root@master ~]# hiveserver2 
    #或者 
    [root@master ~]# hive --service hiveserver2
    

    这个时候你的页面会一直卡在这里,这是正常的,因为你是启动了一个服务

    你只需要再开一个Xshell窗口连接即可在新开的窗口操作

    [root@master ~]# beeline
    Beeline version 2.3.7 by Apache Hive
    beeline> !connect jdbc:hive2://192.168.56.2:10000
    Connecting to jdbc:hive2://192.168.56.2:10000
    Enter username for jdbc:hive2://192.168.56.2:10000: root  #用户名root
    Enter password for jdbc:hive2://192.168.56.2:10000: ******  #密码root
    Connected to: Apache Hive (version 2.3.7)
    Driver: Hive JDBC (version 2.3.7)
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    0: jdbc:hive2://192.168.56.2:10000> 
    
    

    然后使用浏览器在你的192.168.56.2(安装hive的主机ip地址):10002查看

    https://img-blog.csdn.net/20181024212943411?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlYW5hb28=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

    接下来可以在hiveserver2中操作,基本操作和hive中一样

    0: jdbc:hive2://192.168.56.2:10000> show databases;
    +----------------+
    | database_name  |
    +----------------+
    | default        |
    +----------------+
    1 row selected (2.006 seconds)
    
  • 相关阅读:
    python 数据类型 基础第二天
    Python基础第一篇
    前言、入门程序、常量、变量
    win10打开移动热点让手机连接上网教程
    win10移动热点问题
    博客园快速美化
    Idea提示没有符号类错误解决
    mybatis复习01
    test
    d190305面试题01总结
  • 原文地址:https://www.cnblogs.com/A-Nan-q/p/14174595.html
Copyright © 2011-2022 走看看