Hive安装详细步骤
一、下載hive
下載hive——地址:http://mirror.bit.edu.cn/apache/hive/
二、安裝mysql
執行以下幾個命令安裝8.0版本mysql
//1、下載MySQLyum源(8.0版本的) wget http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm (5.7版本的) wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm //2、添加MySQLyum源 sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm (5.7版本) sudo yum localinstall mysql57-community-release-el7-10.noarch.rpm //3、MySQL的GPG升級了,需要更新,如果是新安裝的MySQL,執行以下腳本即可: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 //4、安裝MySQL客戶端 yum -y install mysql-community-server?開啟mysql服務
# 1、開啟Mysql服務 sudo service mysqld start # 2、查看mysql是否開啟 sudo servicee mysqld status # 重啟mysql服務 sudo service mysqld restart # 3、查看初始密碼 sudo grep 'temporary password' /var/log/mysqld.log # 4、進入mysql客戶端,輸入查詢到的初始化密碼 mysql -uroot -pmysql密碼設置
# 1、首先要修改密碼,高版本的mysql默認必須修改密碼才能正常使用,所以如果不修改密碼不能做任何事 alter user 'root'@'localhost' identified by '新密碼' 注意:因為我們還沒有改密碼的復雜度,所以這里的密碼必須足夠復雜,后面會改簡單的 # 2、查看mysql初始化密碼的策略 SHOW VARIABLES LIKE 'validate_password%'; mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 6 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | LOW | | validate_password.special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.00 sec) # 3、修改密碼驗證強度(重啟后就失效) set global validate_password.policy=LOW; # 4、修改密碼允許最短長度,不能小于4 set global validate_password.length=6; # 5、修改簡單密碼 alter user 'root'@'localhost' identified by '000000';?設置mysql遠程登陸
8.0版本以前
# 1、修改權限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; # %表示所有遠程機器 # root表示遠程登陸后使用root用戶 # *.*表示所有表 # 刷新權限 flush privileges;8.0版本的因為有新的安全要求,不能自己給自己授權,所以要新建一個用戶,通過那個用戶來授權
# 1、查看mysql用戶 use mysql; select user, host from user; mysql> select user, host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 4 rows in set (0.00 sec) # 2、新建用戶 create user 'hadoop100'@'%' identified by '000000'; # hadoop100表示用戶名 # %表示任意ip # 000000表示該用戶的密碼,記得如果重啟需要從新修改密碼驗證策略 # 3、為用戶授權 grant all on *.* to 'hadoop100'@'%'; # 4、刷新權限 flush privileges;mysql開機自啟動(在linux中執行)
systemctl enable mysqld三、解壓與配置
①進入到存放hive的目錄下,輸入以下命令解壓到指定目錄下
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/modules/②配置文件重命名
將hive-defaultxml.template重命名為hive-site.xml
將hive-env.sh.template重命名為hive-env.sh
將hive-log4j.properties.template重命名為hive-log4j.properties
③修改配置
1、修改hive-env.sh配置
添加JAVA_HOME和HADOOP_HOME,exportHIVE_CONF_DIR(即hive的conf目錄地址)
2、修改hive-site.xml配置
<!--判斷mysql下是否有這個數據庫,沒有的話創建--> <property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop100:3306/metastore?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description> </property> <!--使用mysql driver驅動,默認是hive內置數據庫derby驅動--> <property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description> </property> <!--mysql賬號--> <property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>username to use against metastore database</description> </property> <!--mysql密碼--> <property><name>javax.jdo.option.ConnectionPassword</name><value>000000</value><description>password to use against metastore database</description> </property> <!--顯示查詢出的數據的字段名稱--> <property><name>hive.cli.print.header</name><value>true</value><description>Whether to print the names of the columns in query output.</description> </property> <!--在hive中顯示當前所在數據庫名稱--> <property><name>hive.cli.print.current.db</name><value>true</value><description>Whether to include the current database in the Hive prompt.</description> </property> <!--使得查詢單列數據不會執行mapreduce--> <property><name>hive.fetch.task.conversion</name><value>more</value><description>Some select queries can be converted to single FETCH task minimizing latency.Currently the query should be single sourced not having any subquery and should not haveany aggregations or distincts (which incurs RS), lateral views and joins.1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only2. more : SELECT, FILTER, LIMIT only (TABLESAMPLE, virtual columns)</description> </property>3、修改hive-log4j.properties配置
設置log路徑用以存放hive的log日志文件
?hive.log.dir=/opt/modules/hive-3.1.2/logs
4、拷貝數據庫驅動包到hive的lib目錄中
cp mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /opt/modules/hive-3.1.2/lib/
四、打開hive
1、啟動Hive,在hive目錄下
bin/hive2、修改HDFS系統中關于Hive的一些目錄權限
/opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/bin/hadoop fs -chmod 777 /tmp/ /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/bin/hadoop fs -chmod 777 /user/hive/warehouse五、配置HiveServer2(注:1.幾版本的hive不用配)
<property><name>hive.server2.long.polling.timeout</name><value>5000</value><description>Time in milliseconds that HiveServer2 will wait, before responding to asynchronous calls that use long polling</description> </property> <property><name>hive.server2.thrift.bind.host</name><value>hadoop100</value><description>Bind host on which to run the HiveServer2 Thrift interface.Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description> </property> <property><name>hive.server2.enable.doAs</name><value>false</value><description>Setting this property to true will have HiveServer2 executeHive operations as the user making the calls to it.</description> </property>1、檢查端口:
?$ sudo netstat -antp | grep 10000
2、啟動服務:
$ bin/hive --service hiveserver2
3、連接服務:
$ bin/beeline
?beeline> !connect jdbc:hive2://hadoop100:10000?
六、安裝hive出現的一些錯誤
1、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 配置文件hive-site.xml 中找到${system:java.io.tmpdir},
并把所有的${system:java.io.tmpdir}都替換成具體目錄,如/opt/modules/hive-0.13.1-cdh5.3.6/tmp即可
2、使用hive語句時出現:
Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D解決方案:
①進入hive-site.xml配置文件中
將
<property><name>hive.exec.local.scratchdir</name><value>/opt/modules/hive-0.13.1-cdh5.3.6/tmp/${System:user.name}</value><description>Local scratch space for Hive jobs</description> </property>配置改為如下配置即可,其它地方可以不用改
<property><name>hive.exec.local.scratchdir</name><value>/opt/modules/hive-0.13.1-cdh5.3.6/tmp/${user.name}</value><description>Local scratch space for Hive jobs</description> </property>3、在Hive中無法執行任何命令java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.Session
hive的數據庫MySQL在安裝的時候沒有初始化
# 在MySQL中 # 刪除mysql中的元數據庫 drop databases metastore; # 新建一個元數據庫 create database metastore;# 在命令行中,重新初始化 schematool -dbType mysql -initSchema總結
以上是生活随笔為你收集整理的Hive安装详细步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: target存放的是编译后的.class
- 下一篇: spring cloud 总结