1. 程式人生 > >ubuntu系統的mysql+hadoop+hive環境搭建

ubuntu系統的mysql+hadoop+hive環境搭建

1.在ubuntu系統上安裝mysql資料庫
sudo apt-get install mysql-server
在這裡插入圖片描述
安裝過程中會提示兩次輸入密碼,己住自己設定的密碼,一直下一步。
檢查是否安裝成功:mysql -u 使用者名稱 -p 密碼 顯示資料庫後
show databases; 出現數據庫列表即可
2.安裝JDK1.8
2.1 在官網上下載jdk7及以上的版本—jdk1.8
2.2 安裝jdk

$ mkdir /usr/lib/jvm                           #建立jvm資料夾
$ sudo tar zxvf jdk-7u80-linux-x64.tar.gz  -C /usr/lib #/ 解壓到/usr/lib/jvm目錄下
$ cd /usr/lib/jvm                                 #進入該目錄
$ mv  jdk1.7.0_80 java                         #重新命名為java
$ vi ~/.bashrc                                 #給JDK配置環境變數

2.3 設定環境變數
進入到當前使用者的.bashrc檔案:sudo vim ~/.bashrc
在.bashrc中新增如下命令

export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

修改完之後,更新使之生效

$ source ~/.bashrc                       #使新配置的環境變數生效
$ java -version                          #檢測是否安裝成功,檢視java版本

若出現如圖,則安裝成功
在這裡插入圖片描述
3.安裝hadoop-2.6.0
3.1 下載hadoop-2.6.0.tar.gz—hadoop-2.6.0
3.2 建立hadoop使用者

$ sudo useradd -m hadoop -s /bin/bash  #建立hadoop使用者,並使用/bin/bash作為shell
$ sudo passwd hadoop                   #為hadoop使用者設定密碼,之後需要連續輸入兩次密碼
$ sudo adduser hadoop sudo             #為hadoop使用者增加管理員許可權
$ su - hadoop                          #切換當前使用者為使用者hadoop
$ sudo apt-get update                  #更新hadoop使用者的apt,方便後面的安裝

3.3 安裝SSH,設定SSH無密碼登陸

$ sudo apt-get install openssh-server   #安裝SSH server
$ ssh localhost                         #登陸SSH,第一次登陸輸入yes
$ exit                                  #退出登入的ssh localhost
$ cd ~/.ssh/                            #如果沒法進入該目錄,執行一次ssh localhost
$ ssh-keygen -t rsa  

在這裡插入圖片描述
然後再輸入:

$ cat ./id_rsa.pub >> ./authorized_keys #加入授權
$ ssh localhost                         #此時已不需密碼即可登入localhost

出現下圖即安裝登陸ssh成功:
在這裡插入圖片描述
注:3.3步一定要設定,此處設定的ssh屬於連結的網路協議,我之前以為是設定xshell連線,我本機上裝的有xshell,也可以連線,就沒設定這步,結果就失敗了。
3.4 安裝hadoop

$ sudo tar -zxvf  hadoop-2.6.0.tar.gz -C /usr/local    #解壓到/usr/local目錄下
$ cd /usr/local
$ sudo mv  hadoop-2.6.0    hadoop                      #重新命名為hadoop
$ sudo chown -R hadoop ./hadoop                        #修改檔案許可權

3.5 給hadoop配置環境變數,同樣放在.bashrc檔案中,新增如下配置

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

在這裡插入圖片描述
更新檔案生效後,出現如下即安裝成功:
在這裡插入圖片描述
配置完成後,執行格式化,啟動測試

$ ./bin/hdfs namenode -format
$ ./sbin/start-all.sh
$ jps

在這裡插入圖片描述
出現NameNode,DataNode和SecondaryNameNode則啟動成功。
可能出現的問題

4.安裝hive資料庫
4.1 下載apache-hive-1.2.2-bin.tar.gz
4.2 在mysql上建立一個hive資料庫,並建立user表,新增一條使用者記錄並賦予許可權
在這裡插入圖片描述

我安裝的是jdk1.8,但是這個不含jps,所以需要再下載一個openjdk-8-jdk-headless。
create database hive;
use hive;
create table user(Host char(20),User char(10),Password char(20));
insert into user(Host,User,Password) values("localhost","hive","123456");
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.*  TO 'hive'@'localhost' IDENTIFIED BY 'hive';
FLUSH PRIVILEGES;

4.3 安裝hive(將檔案通過xshell工具傳到伺服器的臨時檔案中)
將mysql-connector-java-5.2.24-bin.jar放到$HIVE_HOME/lib下

$ sudo tar -zxvf  /tmp/apache-hive-1.2.2-bin.tar.gz -C /usr/local    #解壓到/usr/local目錄下
$ cd /usr/local
$ sudo mv  apache-hive-1.2.2-bin.tar.gz    hive                      #重新命名為hive

4.4 配置hive
4.4.1 配置環境變數
sudo vim /etc/profile
儲存後記得要source /etc/profile 使其更改生效

#hive
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

4.4.2 修改hive/conf下的幾個模板

cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml

4.4.2.1 更改hive-env.sh檔案,指定hadoop的安裝路徑

HADOOP_HOME=/usr/local/hadoop

4.4.2.2 更改hive-site.xml檔案,指定資料庫的相關資訊

<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>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
  <description>username to use against metastore database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hive</value>
  <description>password to use against metastore database</description>
</property>

4.4.3 修改hive/bin下的hive-config.sh檔案

export JAVA_HOME=/usr/lib/jvm/java
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive

啟動測試
在這裡插入圖片描述
4.4.4 可能出現的問題
a. 在這裡插入圖片描述
這是因為hadoop目錄下存在老版本的jline,把hive目錄下的jline包拷貝到hadoop目錄下即可。

4.5 配置hiveserver2
我理解這個就是支援其他程式語言通過呼叫自己的API訪問hive資料庫

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://172.16.101.33:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.
    </description>
</property>
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>172.16.101.33</value>
    <description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.
    </description>
</property>

啟動測試:先啟metastore,再另起一個視窗,啟hiveserver2,
在這裡插入圖片描述
在這裡插入圖片描述
連線測試成功
在這裡插入圖片描述