1.下載後解壓修改文件夾的用戶及用戶組權限
2.配置參數
/etc/profile(環境變量)
export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin
hive-env.sh
export HADOOP_HOME=/usr/local/hadoop
bin/hive-config.sh
export JAVA_HOME=/usr/lib/jdk
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
hive-site.xml(由hive-default.xml.template複製生成)
<property> --這四個參數一定要配置,否則報錯
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive/temp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive/temp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/temp</value>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/usr/local/hive/operation_logs</value>
</property>
<property> --該參數是設置HDFS中保存數據倉庫的目錄
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
hive-log4j.properties
hive.log.dir=/usr/local/hive/logs
hive.log.file=hive.log
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter --重要
3.配置完工,執行 hive 即可進入 hive shell,注意Hive是建立在Hadoop之上的,需啓動HDFS,在執行hive
5.連接mysql
先看看mysql服務有沒有啓動,/etc/rc.d/init.d/mysql status
我的系統安裝時就選擇了mysql軟件,不過默認是沒有啓動的,如果沒有安裝,可以yum install mysql-server安裝
注意切換到root權限下才能執行 service mysqld start ,啓動mysql
6.mysqladmin -u root password newpassword --mysql安裝後root用戶默認沒有密碼,需設定一個密碼
mysql -u root -p --root 用戶登錄mysql,接下來提示輸入密碼,輸入剛纔設定的密碼即可,root成功登錄
注意:如果你的主機地址不是localhost,而是配置了Hosts文件,有了自己的主機名,辣麼問題來了,請用下面的命令操作
mysqladmin -u root -h CentOS password 'new-password' -- -u 表示用戶名 -h 表示主機名
mysql -u root -h CentOS -p -- -p表示密碼
7.接下來創建其他用戶
create user 'user1'@'localhost' identified by 'password';
grant select , insert , update , delete on *.* to 'user1'@'localhost'
grant all on *.* to 'user1'@'localhost' --這個是賦給用戶 user1 所有的權限,簡單暴力
用上面第一句話和第三句就可以了
注意:權限設置好後,記得執行
flush privileges; --刷新系統權限表
8.配置hive連接mysql
hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
--這裏因爲我創建mysql帳號時用的是localhost,所以這裏是這個,如果你用的主機名,這裏填寫主機名,3306是mysql默認的監聽端口,其他照抄
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>conan1</value> --這是我自己在創建的mysql用戶
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
</property>
9.去網上下載一個mysql-connector-java-5.1.34-bin.jar,把它放入 ${HIVE_HOME}/lib 的目錄下,否則會報錯,這個是連接驅動
10.執行環境
命令行環境 :直接輸入 hive 即可進入命令行
hive 驗證啓動的方法:hive --service hwi
這時會報錯,馬丹真坑
FATAL hwi.HWIServer:HWI WAR file not found at /usr/local/hive/${env:HWI_WAR_FILE},小錯誤,
hive目前的發行包裏沒有hwi的war包文件,這個問題在0.13和0.14上都存在,沒有這個war包就不能啓動hwi服務。
目前的解決方法是從源碼手動build出這個war包,具體做法是:
下載hive 0.14.0的源碼包並解壓
解壓後進入hwi子目錄,該目錄下的web文件夾正是war包的全部文件,我們需要做的就是通過jar命令把這個文件夾打包爲war文件。
在hwi目錄下執行: jar cvfM0 hive-hwi-0.14.0.war -C web/ .
執行之後 ,將生成的war文件拷貝至$HIVE_HOME/lib文件夾下,同時修改hive-site.xml文件夾中的:
hive.hwi.war.file,將其value改爲lib/hive-hwi-0.14.0.war
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-0.14.0.war</value>
</property>
再執行 hive --service hwi
妥妥滴完工,這時還會報錯,我母雞怎麼解決,不過還是可以運行了
顯示 Started [email protected]:9999
打開瀏覽器輸入 localhost:9999/hwi 成功打開頁面
如果出現以下錯誤:
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jdk/jre"
解決方法:
cp $JAVA_HOME/lib/tools.jar $HIVE_HOME/lib/
11.Hive的數據類型
基本數據類型
tinyint/smallint/int/bigint
float/double
boolean
string
複雜數據類型
Array/Map/Struct
沒有date/datetime
12.Hive常規操作
hive > create database test ; --創建一個 test 數據庫
hive > use test ; --使用 test 數據庫
hive > create table score(name string , score int); --創建名叫 score 的表,兩個字段,name字段是string類型,score是int累i系那個
hive > create table person(name string,age int)row format delimited fields terminated by '\t' escaped by '\\' stored as textfile;
--後面的這段話是指定字段的分隔符,這裏設置的是 '\t' 遇到一個這個符號 即表示一個字符串結束
--COLLECTION ITEMS TERMINATED BY ',' 這句話表示這個字段是一個數組,用 ',' 分割元素對象
hive > load data local inpath ' fileshare/score1.txt ' into table score; --加載score1.txt文件中的數據到表 score 中
hive > select * from score; --查詢顯示錶中的數據
hive > select count(*) from score; --這個計算過程,Hive會自動轉換成MapReduce任務執行,
hive > drop table score ; --刪除表