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,
連線測試成功