中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

hive的環境搭建

發布時間:2020-07-02 01:28:17 來源:網絡 閱讀:428 作者:原生zzy 欄目:大數據

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

1. 內嵌Derby版本:

安裝步驟

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

安裝時的常見錯誤

  • Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000),這表示metastore_db已經存在,在相應的進入hive的目錄中刪除metastore_db,然后重新初初始化元數據即可。
  • 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 節點都得替換。

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

2. 外置MySQL版本:

首先這里需要MySQL的服務,在集群的任意節點上配置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 在同一個服務器節點,那么請更改 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數據倉庫的數據存儲在hdfs上的目錄:-->
    <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    </property>
  • 把MySQL的驅動包,放置在hive/lib (mysql-connector-java-5.1.40-bin.jar)
  • 配置hive的環境變量
    export HIVE_HOME=/home/hadoop/apps/apache-hive-1.2.1-bin
    export PATH=$PATH:$HIVE_HOME/bin
  • 驗證hive的安裝:hive -help
  • 初始化元數據:schematool -dbType mysql -initSchema
  • 啟動hive的客戶端:hive
    注意:當配置好hive后,會在MySQL中生成57張表:
    DBS:管理庫的表:

hive的環境搭建
TBLS:管理表的表
hive的環境搭建
COLUMNS_V2:管理字段的表
hive的環境搭建

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連接通常會出現錯誤:
      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的權限管理提高了,hadoop集群報出來的。必須做權限認證。
      解決方法

  • 停止集群: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客戶端中執行Linux命令(只能執行部分)
         - 在hive客戶端中執行hadoop相關命令

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

    常見操作有:

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

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

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

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

AI

大宁县| 桦甸市| 怀化市| 屯昌县| 潞城市| 佛坪县| 洮南市| 卫辉市| 黑龙江省| 阿瓦提县| 聂拉木县| 龙泉市| 勃利县| 海阳市| 皋兰县| 三门峡市| 南城县| 突泉县| 陆良县| 泰宁县| 朝阳县| 阿图什市| 宣城市| 涪陵区| 浪卡子县| 拜城县| 巍山| 东乌珠穆沁旗| 合肥市| 德惠市| 介休市| 涿州市| 延寿县| 天镇县| 东乡族自治县| 徐水县| 清镇市| 泌阳县| 喀喇| 达州市| 岢岚县|