hive的環(huán)境搭建-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比龍井網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式龍井網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋龍井地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

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
  • 初始化元數(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的驅動包,放置在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的權限管理提高了,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客戶端中執(zhí)行Linux命令(只能執(zhí)行部分)
         - 在hive客戶端中執(zhí)行hadoop相關命令

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

    常見操作有:

    hive>quit;    #退出hive的客戶端
    hive>set key=value;     #設置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ù)(只能設置一個)
[hadoop hadoop01@~]$ hive -i linux參數(shù)文件  #進入,hive并執(zhí)行參數(shù)文件中的所有參數(shù)設置
[hadoop hadoop01@~]$ hive -v #輸出結果打印到控制臺
[hadoop hadoop01@~]$ hive -S #不打印日志,經(jīng)常和-e參數(shù)使用
[hadoop hadoop01@~]$ hive -S -e 'hql' >> file  #將查詢到的結果輸出到Linux文件中

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站標題:hive的環(huán)境搭建-創(chuàng)新互聯(lián)
轉載源于:http://muchs.cn/article30/coeeso.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、微信小程序、網(wǎng)站建設、定制開發(fā)、軟件開發(fā)、服務器托管

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司