Linux環境下hive的安裝
一 Hive簡介
在Hadoop生態圈中屬於資料倉庫的角色。Hive能夠管理Hadoop中的資料,同時可以查詢Hadoop中的資料。它提供了一系列的工具,可以用來進行資料提取轉化載入(ETL),這是一種可以儲存、查詢和分析儲存在Hadoop中的大規模資料的機制;
Hive定義了簡單的類SQL查詢語言,稱為HQL ,它允許熟悉SQL的使用者查詢資料。同時,這個語言也允許熟悉MapReduce開發者的開發自定義的mapper和reducer來處理內建的mapper和reducer無法完成的複雜的分析工作;
本質上講,Hive是一個SQL解析引擎。Hive可以把SQL查詢轉換為MapReduce中的job然後在Hadoop執行。Hive有一套對映工具,可以把SQL轉換為MapReduce中的job,可以把SQL中的表、欄位轉換為HDFS中的檔案(夾)以及檔案中的列。這套對映工具稱之為metastore,一般存放在derby、mysql中;
Hive的表其實就是HDFS的目錄,按表名把資料夾分開。如果是分割槽表,則分割槽值是子資料夾,可以直接在M/R的Job裡使用這些資料。
Hive的系統架構使用者介面主要有三個:CLI,JDBC/ODBC和WebUI
CLI,即Shell命令列
JDBC/ODBC是Hive的Java,與使用傳統資料庫JDBC的方式類似
WebUI是通過瀏覽器訪問Hive
Hive將元資料儲存在資料庫中(metastore),支援mysql、derby。Hive中的元資料包括表的名字、表的列和分割槽及其屬性、表的屬性(是否為外部表等)、表的資料所在目錄等
直譯器、編譯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃(plan)的生成。生成的查詢計劃儲存在 HDFS 中,並在隨後有MapReduce呼叫執行
Hive的資料儲存在HDFS中,大部分的查詢由MapReduce完成(包含 * 的查詢,比如select * from table不會生成MapRedcue任務,where後的條件是partition也不會生成M/R任務)
二 安裝步驟:
安裝是在master節點的hadoop使用者下進行
安裝前準備:
完成JDK安裝配置
完成hadoop安裝配置
下載檔案
Hive下載路徑:http://archive.apache.org/dist/hive/apache-hive-1.2.1-bin.tar.gz
mysql-connector-java-5.1.39.zip
2、叢集的規劃設計
叢集中部署3個節點,本地模式只安裝master節點,遠端模式需要安裝slave1和slaver2節點。
IP hostname 充當的角色
192.168.80.3 Master nn/RM/Hive/metastore/mysql
192.168.80.4 Slave1 dn/NM/Hive
192.168.80.5 Slave2 dn/NM/hive
角色描述:
nn:NameNode節點
dn:DataNode節點
RM:ResourceManager
NM:NodeManager
每臺機器都安裝Hive,這樣多個客戶端可以同時執行Hive命令。
2.1 Hive安裝配置--本地模式
- 1 安裝Mysql,並進行配置
2)安裝伺服器
sudo apt-get install mysql-server
安裝客戶端
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
修改配置檔案/etc/mysql/mysql.conf.d/mysqld.cnf
註釋 bind-address = 127.0.0.1行
正常情況下,mysql佔用的3306埠只是在IP 127.0.0.1上監聽,拒絕了其他IP的訪問,需要將bind-address = 127.0.0.1註釋掉。
建立使用者並設定遠端登入許可權
grant ALL PRIVILEGES on *.* to ‘hive'@'%' identified by'123456';
給hive使用者任何機器('%')任何庫.任何表(*.*)的訪問許可權,訪問密碼(identified by)為'123456'
grant ALL PRIVILEGES ON *.* TO ‘hive'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
- 2 Hive安裝
1)在hadoop使用者下,將下載的hive安裝包上傳到/home/hadoop上
解壓 tar -zvxf apache-hive-2.3.3-bin.tar.gz
重新命名包 mv apache-hive-2.3.3-bin/ hive-2.3.3
將mysql-connector-java-5.1.39.zip檔案解壓出來的jar放入hive 的lib目錄下(sftp>匯入到Linux目錄下,mv剪下)
建立目錄
mkdir /home/hadoop/hive-2.3.3/datas/logs
mkdir /home/hadoop/hive-2.3.3/datas/temp
2)配置hive環境變數
[[email protected] hive-2.3.3]$ sudo vi /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_144
JRE_HOME=/usr/java/jdk1.8.0_144/jre
HADOOP_HOME=/home/hadoop/hadoop-2.9.0
MYSQL_HOME=/usr/local/mysql
HIVE_HOME=/home/hadoop/hive-2.3.3
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/etc/hadoop:$MYSQL_HOME/bin:$HIVE_HOME/bin:$PATH
export JAVA_HOME JRE_HOME CLASSPATH HADOOP_HOME PATH
3)使配置生效
[[email protected] hive-2.3.3]$ source /etc/profile
4)配置hive-env.sh
cd /home/hadoop/hive-2.3.3/conf
cp hive-env.sh.template hive-env.sh
編輯hive-env.sh檔案
HADOOP_HOME=/home/hadoop/hadoop-2.9.0
export HIVE_CONF_DIR=/home/hadoop/hive-2.3.3/conf
5)建立目錄
- Hive配置檔案裡要用到HDFS的一些路徑,需要手動建立如下路徑:
- [[email protected] hive-2.3.3]$ hadoop fs -mkdir -p /hive/warehouse
- [[email protected] hive-2.3.3]$ hadoop fs -mkdir -p /hive/logs
- [[email protected] hive-2.3.3]$ hadoop fs -mkdir -p /hive/temp
- hdfs dfs -chmod 733 /hive/warehouse (因為使用的是Hadoop使用者,可以省略)
- hdfs dfs -chmod 733 /hive/logs (因為使用的是Hadoop使用者,可以省略)
- hdfs dfs -chmod 733 /hive/tmp(因為使用的是Hadoop使用者,可以省略)
6)配置hive-site.xml
cd /home/hadoop/hive-2.3.3/conf
cp hive-default.xml.template hive-site.xml
編輯hive-site.xml檔案
<property>
<name>hive.exec.mode.local.auto</name> /搜尋
把 <value>false</value>
<value>true</value>----改為true進行操作時優先使用本地模式(不使用MapReduce)
<description>Let Hive determine whether to run in local mode automatically</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name> /搜尋
把 <value>jdbc:derby:;datavaseName=metastore_db;create=true</value>#連線的mysql的路徑
改為<value>jdbc:mysql://sure:3306/hive?createDatabaseIfNotExist=true</value>
//替換為jdbc:mysql://sure(mysql所在的主機名):3306/hive(隨意建立的使用者名稱)?createDatabaseIfNotExist=true
</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> //登入hive的使用者
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value> //對應登入使用者的密碼
</property>
<property>
<name>hive.metastore.warehouse.dir</name> //HDFS建立的元資料目錄
<value>/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/hive/temp</value> //HDFS建立的臨時目錄路徑
</property>
/system: 搜尋 找到
<property>
<name>hive.querylog.location</name>
把 <value>${system:java.io.tmpdir}/${system:user.name}</value>
改為<value>/home/hadoop/hive-2.3.3/datas/logs</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
把 <value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value>
改為<value>/home/hadoop/hive-2.3.3/datas/logs</value>
<description>Top level directory where operation logs are stored if logging
functionality is enabled</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
把 <value>${system:java.io.tmpdir}/${system:user.name}</value>
改為<value>/home/hadoop/hive-2.3.3/datas/temp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
把 <value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>
改為<value>/home/hadoop/hive-2.3.3/datas/temp</value>
<description>Temporary local directory for added resources in the remote fil
e system.</description>
</property>
7)配置log4j
建立配置檔案:
cp hive-exec-log4j.properties.template hive-exec-log4j.properties
cp hive-log4j.properties.template hive-log4j.properties
修改上面兩個檔案中的配置:
[[email protected] conf]$ vi hive-exec-log4j2.properties
hive.log.dir=/home/hadoop/hive-2.3.3/datas/logs
[[email protected] conf]$ vi hive-log4j2.properties
把 property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
改為 property.hive.log.dir =/home/hadoop/hive-2.3.3/datas/logs
// log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
8)初始化mysql資料庫
mysql> select user,password,host from user;先檢視使用者資訊
為了支援mysql遠端訪問首先設定當前mysql用於允許master遠端機訪問,並修改root使用者的密碼為123456:
mysql> grant all privileges on *.* to [email protected]'master' identified by '123456' with grant option;
mysql> flush privileges;
*.*代表全部資料庫的全部表授權,也可以指定資料庫授權,如test_db.*;
all privileges代表全部許可權,也可以insert,update,delete,create,drop等;
允許root使用者在spark(Linux系統的主機名,IP對映)進行遠端登陸,並設定root使用者的密碼為root。
flush privileges告訴伺服器重新載入授權表。
hive執行初始化命令時
MySQL的驅動包放置到$HIVE_HOME/lib目錄下
執行schematool -dbType mysql -initSchema進行初始化;
Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
以下異常說明mysql已經啟動。 應先關掉先前啟動的mysql.再執行初始化schema操作。
schematool --dbType mysql –initSchema
如果出現如下報錯
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version. Underlying cause: java.sql.SQLException : Access denied for user 'root'@'sure' (using password: YES)
接下來就是用sql來修改root的密碼
mysql> use mysql;
mysql> update user set password=password("你的新密碼") where user="root";
mysql> flush privileges;
mysql> quit
如果出現如下警告:
WARN: Establishing SSL connection without server‘s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. 。。。
修改hive-site.xml配置檔案:
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>
9)啟動hive
Hive
- 啟動hive時,遇到如下問題:
- Exception in thread "main" java.lang.RuntimeException: The root scratch dir: /hive/temp on HDFS should be writable. Current permissions are: rwxr-xr-x
- 解決方法:
- [[email protected] conf]$ hadoop fs -ls /hive/
Found 3 items
drwxr-xr-x - hadoop supergroup 0 2018-09-06 16:58 /hive/logs
drwxr-xr-x - hadoop supergroup 0 2018-09-06 16:58 /hive/temp
drwxr-xr-x - hadoop supergroup 0 2018-09-06 16:57 /hive/warehouse
- [[email protected] conf]$ hadoop fs -chmod 733 /hive/*
- [[email protected] conf]$ hadoop fs -ls /hive/
Found 3 items
drwx-wx-wx - hadoop supergroup 0 2018-09-06 16:58 /hive/logs
drwx-wx-wx - hadoop supergroup 0 2018-09-06 16:58 /hive/temp
drwx-wx-wx - hadoop supergroup 0 2018-09-06 16:57 /hive/warehouse
- 啟動hive時,可能會遇到下面的問題:
- Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
- 解決方法:
- 檢視hive-site.xml配置,會看到配置值含有"system:java.io.tmpdir"的配置項
- 新建資料夾mkdir -p /home/hadoop/hive-1.2.1/hivedata/tmp
- 將含有"system:java.io.tmpdir"的配置項的值修改為如上地址
- 啟動hive時,可能會遇到下面的問題:
- [ERROR] Terminal initialization failed; falling back to unsupported
- java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected at jline.TerminalFactory.create(TerminalFactory.java:101) Found class jline.Terminal:
- 原因是hadoop目錄下存在老版本jline
- 解決方法:
- 進入hive的lib目錄,把新版本的jline複製到hadoop的以下目錄
- cp jline-2.12.jar /home/hadoop/hadoop-2.7.2/share/hadoop/yarn/lib/
- 把hadoop舊版本的jline刪掉
- 測試hive
hive> create TABLE test( id INT, name string);
hive> SHOW TABLES;
hive> exit;
2.2 Hive安裝配置--遠端模式
遠端模式在slave1和slave2上安裝配置。
1、將master上的hive-1.2.1目錄複製到其他節點上
2、按照master上.profile檔案的配置修改其他節點上的.profile檔案,新增hive的配置
3、修改hive-size.xml檔案,刪除如下的配置:
javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName
javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
4、修改hive-size.xml檔案,新增如下的配置:
<property>
<name>hive.metastore.uris</name> #指定hive元資料訪問路徑
<value>thrift://192.168.80.3:9083</value>
</property>
5、在master節點啟動hive服務端程式:$ hive --service metastore &
6、在slave1或slaver2上執行hive命令
hive
7、測試hive
hive> SHOW TABLES;
相關推薦
Linux環境下hive的安裝
一 Hive簡介 在Hadoop生態圈中屬於資料倉庫的角色。Hive能夠管理Hadoop中的資料,同時可以查詢Hadoop中的資料。它提供了一系列的工具,可以用來進行資料提取轉化載入(ETL),這是一種可以儲存、查詢和分析儲存在Hadoop中的大規模資料的機制; Hiv
Linux 環境下VirtualBox安裝增強功能
.com all 圖片 root ready pos 操作圖片 共享文件夾 點擊 VirtualBox安裝CentOS後,再安裝增強功能就可以共享文件夾、粘貼板以及鼠標無縫移動,主要步驟如下: 1、yum -y update 2、yum -y install g++ gcc
基礎--Redis在Linux環境下的安裝
pat ont 2.3 $path 依賴 == man 2.6 官網下載 1. 安裝redis服務 1.1 檢查安裝依賴程序 yum install gcc-c++yum install -y tclyum install wget 1.1.1 下載redis安裝包 ① 官
Linux環境下Redis安裝配置步驟[轉]
http redis-cli ont == LV 成功 fcm space 執行 在LInux下安裝Redis的步驟如下: 1、首先下載一個Redis安裝包,官網下載地址為:https://redis.io/ 2、在Linux下解壓redis: tar -zxvf re
linux環境下tomcat安裝
down 切換 onf 驗證 rtu .com shu 項目 pac 1.安裝tomcat前安裝jdk(前提下) 2.下載安裝包apache-tomcat-8.0.36.tar.gz 解壓:tar -zxvf apache-tomcat-8.0.36.tar.gz
Linux環境下編譯安裝Mysql
mysql上一篇文章介紹了手工編譯安裝Apache,這篇文章將繼續之前的文章,介紹如何編譯安裝Mysql。 - 二、 編譯安裝Mycql 1. 首先解壓mysql文件到/opt目錄。 tar zxvf /opt/lamp/mysql-5.5.24.tar.gz -C /opt/ 2.確認安裝 gcc 、
nginx反向代理、負載均衡配置與linux環境下的安裝及通過ip和域名訪問nginx
本文主題: 一、什麼是nginx 二、nginx的應用場景 三、linux環境下nigix的安裝 四、nginx配置虛擬機器(ip、域名) 五、nginx實現反向代理 六、nginx實現負載均衡 一、什麼是nginx 1、http伺服器(通過nginx配置檔案配置
php在linux環境下的安裝使用及擴充套件的安裝
下載地址 http://php.net/downloads.php 開始安裝 第一步:安裝相應的庫檔案 yum install xml2-config xml2-confg-devel libxml2 libxml2-devel bzip2 bzip2-de
Linux環境下原始碼安裝Apache2.2.25
操作環境:RedHat Enterprise Linux 5.6 一、安裝準備 安裝Apache一般依賴3個元件:apr、apr-util、pcre。 確保這三個元件已經安裝。 [[email protected] ~]# rpm -qa|grep apr apr-uti
linux環境下 jdk安裝
下載JDK安裝包。 解壓jdk-7u79-linux-x64.tar.gz到指定目錄 配置環境。 【注意:一定要按照到/usr/java/目錄下 因為CManager會預設找這個目錄下的JAVA_HOME】 a>WebServer 的java環
Redis在linux環境下的安裝和部署
官網:http://redis.io windows版本下載地址https://github.com/MicrosoftArchive/redis/releases 1Redis建議安
Linux環境下 Redis 安裝、啟動、連線、主從複製、哨兵機制
安裝步驟 Linux 版本號 CentOS-6.4-x86_64 Redis 版本號 redis-3.0.6.tar.gz 1、usr資料夾中,建立redis資料夾 2、解壓 redis-3.0.6.tar.gz 3、解壓後進入到資料夾 redis-3.0.6 4、編譯 ma
linux環境下如何安裝python3
一般的Linux的上都有預設的Python的版本,CentOS6.5預設的Python的版本的2.6.6的,因為工作原因,這裡需要用到Python3.6.3的版本,在這裡,小編將會一步步的教大家進行再Linux下Python3的安裝。一,安裝之前檢視自帶的Python的版本二,上傳並解壓Python3.6.3
Linux環境下Redis安裝搭建
前提:準備redis安裝包,下載地址如下: https://redis.io/download 1、下載原始碼,解壓縮後編譯原始碼。 $ wget http://download.redis.io/releases/redis-4.0.1.tar.
解壓版jdk在linux環境下的安裝
用root使用者將jdk-7u79-linux-x64.tar.gz上傳至/soft/jdk目錄下並解壓 具體解壓命令為:tar -xvf jdk-7u79-linux-x64.tar.gz 用ro
Linux環境下系統安裝JDK
說明:本文使用的Linux系統為CentOs6.5版本。 在CentOs6.5中中集成了JDK,是OpenJDK,我們可以通過命令來檢視一下JDK的版本。命令為:java -version。如圖所示:
Linux環境下Redis安裝配置步驟
在LInux下安裝Redis的步驟如下: 2、在Linux下解壓redis: tar -zxvf redis-2.8.22.tar.gz 3、解壓完成之後,進入到解壓的目錄裡面“”redis-2.8
linux環境下NPM安裝小結
1、安裝Nodejs 官網地址為http://nodejs.org 但國外地址下載太慢了,建議從淘寶下載(https://npm.taobao.org/mirrors/node/)wget https://npm.taobao.org/mirrors/node/lates
Linux環境下hadoop安裝過程
一 實驗環境: 1.三臺物理機(可以虛擬機器虛擬出的三臺主機),其中一臺做為主節點(namenode)ip:192.168.30.50,兩臺做為從節點(datanode)ip:192.168.30.51 / 192.168.30.52 2.為每一臺主機安裝JDK1.6以
在linux環境下靜默安裝oracle 11g後設置自動啟動
要讓oracle隨linux啟動而啟動,需要設定以下五個地方:1、修改/etc/oratab# Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and secon