10大資料-hive 環境搭建
1、將apache-hive-1.2.1-bin.tar.gz上傳到以下目錄
(這個目錄可以自定義,我慣用這個)
/opt/modules/app
2、解壓到當前目錄,並且重新命名為hive
tar -xzvf apache-hive-1.2.1-bin.tar.gz
3、配置環境變數
進入環境變數配置檔案:
vi /etc/profile
追加以下內容:
export HIVE_HOME=/opt/modules/app/hive
export PATH=$PATH:$HIVE_HOME/bin
修改完環境變數,使用以下語句,使該環境變數生效:
resource /etc/profile
測試環境變數看是否配置成功:
echo $HIVE_HOME
image.png
執行結果
4、配置hive引數
所需配置檔案所在目錄:/opt/modules/app/hive/conf
1、拷貝 hive-default.xml ,hive-env.sh 模板
cp hive-default.xml.template hive-default.xml
cp hive-env.sh.template hive-env.sh
2、建立hive-site.xml
touch hive-site.xml
3、配置hive-env.sh
在hive-env.sh文件中追加以下內容:
export JAVA_HOME=/opt/modules/jdk1.8
export HIVE_HOME=/opt/modules/app/hive
export HADOOP_HOME=/opt/modules/app/hadoop
4、配置hive-site.xml
配置該檔案,需要首先在hive 下建立tmp目錄
然後將以下內容填寫到hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore </description> </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> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> </property> <property> <name>hive.querylog.location</name> <value>/opt/modules/hive/tmp</value> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/opt/modules/hive/tmp</value> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/opt/modules/hive/tmp</value> </property> <property> <name>datanucleus.schema.autoCreateAll</name> <value>true</value> </property> ### beeline連線hive的thrift服務,使用者名稱密碼設定 <property> <name>hive.server2.thrift.client.user</name> <value>root</value> <description>Username to use against thrift client</description> </property> <property> <name>hive.server2.thrift.client.password</name> <value>root</value> <description>Password to use against thrift client</description> </property> </configuration>
5、上傳mysql驅動jar
下載mysql驅動檔案mysql-connector-java-5.1.7-bin.jar,並上傳到到/opt/modules/app/hive/lib目錄下。
6、初始化hive
命令:schematool -initSchema -dbType mysql
最後顯示schemaTool completed,沒有報錯就成功了。
7、啟動hive
輸入命令:hive
注意:在啟動hive之前確保hadoop是啟動的
常見問題
1.Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp":root:supergroup:drwx------
修改一下許可權
[[email protected] bin]# ./hdfs dfs -chmod -R 777 /tmp
2.hive啟動beeline連線報錯: User: xxx is not allowed to impersonate anonymous (state=08S01,code=0)
解決方式:在hadoop的配置檔案core-site.xml增加如下配置,重啟hdfs,其中“xxx”是連線beeline的使用者,將“xxx”替換成自己的使用者名稱即可
<property>
<name>hadoop.proxyuser.xxx.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.xxx.groups</name>
<value>*</value>
</property>
“*”表示可通過超級代理“xxx”操作hadoop的使用者、使用者組和主機
如果在hive之前安裝了spark,可能出現以下錯誤:
初次啟動hive,解決 ls: cannot access /home/hadoop/spark-2.2.0-bin-hadoop2.6/lib/spark-assembly-.jar: No such file or directory問題
spark升級到spark2以後,原有lib目錄下的大JAR包被分散成多個小JAR包,原來的spark-assembly-.jar已經不存在,所以hive沒有辦法找到這個JAR包。
解決方法
開啟hive的安裝目錄下的bin目錄,找到hive檔案
cd $HIVE_HOME/bin
vi hive
找到下圖中的位置
將滑鼠定位的位置,更改成下圖