1. 程式人生 > >10大資料-hive 環境搭建

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

找到下圖中的位置

 

將滑鼠定位的位置,更改成下圖