溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hive的環(huán)境搭建

發(fā)布時間:2020-07-02 01:28:17 來源:網(wǎng)絡(luò) 閱讀:426 作者:原生zzy 欄目:大數(shù)據(jù)

因為hive是基于hadoop的,所以一定要有hadoop的平臺支撐:
hadoop分布式集群搭建:https://blog.51cto.com/14048416/2341491

1. 內(nèi)嵌Derby版本:

安裝步驟

  • 上傳安裝包:apache-hive-2.3.2-bin.tar.gz
  • 解壓安裝包:tar -zxvf apache-hive-2.3.2-bin.tar.gz -C /application
  • 進入進入到 bin 目錄,運行 hive 腳本:./hive
  • 初始化元數(shù)據(jù)庫:./schematool -dbType derby -initSchema
  • 最終測試進入hive后:hive>show tables;

安裝時的常見錯誤

  • Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000),這表示metastore_db已經(jīng)存在,在相應的進入hive的目錄中刪除metastore_db,然后重新初初始化元數(shù)據(jù)即可。
  • Terminal initialization failed; falling back to unsupported。這是因為hadoop(/root/apps/hadoop-2.6.5/share/hadoop/yarn/lib)集群的 jline-0.9.94.jar 包版本 過低,替換成 hive/lib 中的 jline-2.12.jar 包即可,記住:所有 hdfs 節(jié)點都得替換。

注意:使用Derby方式部署的hive,在哪個工作空間進入hive,就會在哪個工作空間創(chuàng)建一個derby.log metastore_db,元數(shù)據(jù)。即元數(shù)據(jù)跟著空間跑,如果下次不在這個工作空間進入,則無法訪問上傳存儲的數(shù)據(jù)。因此這也是使用Derby方式部署的hive的弊端。

2. 外置MySQL版本:

首先這里需要MySQL的服務,在集群的任意節(jié)點上配置MySQL。
安裝步驟

  • 修改hive的配置文件:hive-site.xml
    <configuration>
    <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop02:3306/hivedb?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
    <!-- 如果 mysql 和 hive 在同一個服務器節(jié)點,那么請更改 hadoop02 位 localhost -->
    </property>
    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    Stay hungry Stay foolish -- http://blog.csdn.net/zhongqi2513
    <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>root</value>
    <description>password to use against metastore database</description>
    </property>
    </configuration>
    <!--指定hive數(shù)據(jù)倉庫的數(shù)據(jù)存儲在hdfs上的目錄:-->
    <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    </property>
  • 把MySQL的驅(qū)動包,放置在hive/lib (mysql-connector-java-5.1.40-bin.jar)
  • 配置hive的環(huán)境變量
    export HIVE_HOME=/home/hadoop/apps/apache-hive-1.2.1-bin
    export PATH=$PATH:$HIVE_HOME/bin
  • 驗證hive的安裝:hive -help
  • 初始化元數(shù)據(jù):schematool -dbType mysql -initSchema
  • 啟動hive的客戶端:hive
    注意:當配置好hive后,會在MySQL中生成57張表:
    DBS:管理庫的表:

hive的環(huán)境搭建
TBLS:管理表的表
hive的環(huán)境搭建
COLUMNS_V2:管理字段的表
hive的環(huán)境搭建

3. 連接hive的客戶端:

  • 直接使用hive命令,進入hive進行操作
  • 把hive啟動成為一個后臺服務:nohup hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &,然后使用beeline連接。
    • [hadoop hadoop01@~]$beeline # 連接hive
    • hadoop01>!connect jdbc:hive2://hadoop01:10000 #連接客戶端連接hive倉庫
    • 或者 [hadoop hadoop01@~]$beeline -u jdbc:hive2://hadoop01:10000 -n hadoop
      但是使用beeline連接通常會出現(xiàn)錯誤:
      Connecting to jdbc:hive2://hadoop01:10000
      Enter username for jdbc:hive2://hadoop01:10000: hadoop
      Enter password for jdbc:hive2://hadoop01:10000: ******
      18/10/15 16:30:37 [main]: WARN jdbc.HiveConnection: Failed to connect to hadoop01:10000
      Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop01:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hadoop is not allowed to impersonate hadoop (state=08S01,code=0

      報這個錯誤的原因不是hive本身,而是hive底層所依賴的hdfs的權(quán)限管理提高了,hadoop集群報出來的。必須做權(quán)限認證。
      解決方法

  • 停止集群:stop-dfs.sh && stop-yarn.sh
  • 修改hadoop的hdfs-site.xml配置文件:加入:
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>
  • 修改hadoop的core-site.xml文件,加入:
    <property>
    <name>hadoop.proxyuser.hadoop.hosts</name>
    <value>*</value>   
    </property>
    <property>
    <name>hadoop.proxyuser.hadoop.groups</name>
    <value>*</value>
    </property>
    <!--core-site.xml這兩個配置的name中的第二個hadoop是你的用戶,如果不是hadoop需要修改-->
  • 重新啟動hadoop集群,重新啟動hive的 server,然后使用beeline連接即可。

    4.用戶接口的操作

     hive的命令分成兩大類:
       - 進入hive客戶端之后的操作:
         - query:正常的操作語句(查詢+庫表的DDL操作)
         - !linux命令:在hive客戶端中執(zhí)行Linux命令(只能執(zhí)行部分)
         - 在hive客戶端中執(zhí)行hadoop相關(guān)命令

    hive>!hadoop  fs -ls / ;   (以Linux命令的形式執(zhí)行)   慢
    hive>dfs -ls  /;    使用當前的hive客戶端的jvm進程執(zhí)行   快

    常見操作有:

    hive>quit;    #退出hive的客戶端
    hive>set key=value;     #設(shè)置hive的參數(shù)
    hive>add jar xxx.jar   #臨時的向hive添加jar包
    hive>add file          #向hive中的classpath中添加file
    hive>list   jars   #查看添加的jar
    hive>source  file   #執(zhí)行一個腳本(這個腳本時存儲在linux上)

   - 進入hive客戶端之前的操作:

[hadoop hadoop01@~]$ hive -e 'hql' #在linux下執(zhí)行hive語句
[hadoop hadoop01@~]$ hive -f linux中的hql腳本  #在Linux下執(zhí)行hql腳本
[hadoop hadoop01@~]$ hive -h hiveconf   key=value # 進入hive客戶端,并初始化參數(shù)(只能設(shè)置一個)
[hadoop hadoop01@~]$ hive -i linux參數(shù)文件  #進入,hive并執(zhí)行參數(shù)文件中的所有參數(shù)設(shè)置
[hadoop hadoop01@~]$ hive -v #輸出結(jié)果打印到控制臺
[hadoop hadoop01@~]$ hive -S #不打印日志,經(jīng)常和-e參數(shù)使用
[hadoop hadoop01@~]$ hive -S -e 'hql' >> file  #將查詢到的結(jié)果輸出到Linux文件中
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI