本系列文章使用的硬件環境爲:centOS 6.5 64bit / 4G RAM 30G HHD
軟件版本:hive2.0.0;Hadoop版本爲2.6.4;JDK版本爲:1.8.0html
step0:讀者能夠直接上Oracle官方網站上下載對應平臺和版本的JDK。本文使用的環境的Linux 64位,因此選擇Linux x64平臺,本文使用的是編譯好的壓縮文件,不使用rpm安裝,選擇tar.gz文件後綴的文件,下載以前須要點選下載文件列表上方的Accept License Agreement
選項,而後點擊文件連接便可下載。
step1:將下載文件拷貝到/usr/local
下java
sudo mv ~/Download/jdk-8u101-linux-x64.tar.gz /usr/local/
step2:解壓軟件包,並重命名,最後刪除無用的壓縮文件node
cd /usr/local sudo tar zxvf jdk-8u101-linux-x64.tar.gz sudo mv jdk1.8.0_101 jdk1.8.0 sudo rm -f jdk-8u101-linux-x64.tar.gz
step3:配置環境變量,用戶能夠選擇全局環境變量(對全部用戶有效),也能夠選擇配置用戶局部的環境變量(對當前用戶有效),由於JDK可能多個用戶都會用到,所以選擇配置全局環境變量,用vim編輯/etc/profile
文件,在文件末尾添加如下的配置信息mysql
export JAVA_HOME=/usr/local/jdk1.8.0 export JRE_HOME=$JAVA_HOME/jre export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
step4:驗證jdk是否安裝成功linux
[hadoop@hadoop ~]$ source /etc/profile [hadoop@hadoop ~]$ echo $JAVA_HOME /usr/local/jdk1.8.0 [hadoop@hadoop ~]$ java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
若是運行上面的命令能正確輸出,表示JDK已經安裝好了。web
step0:Hadoop下載,讀者能夠上Hadoop官網下載對應的版本便可,本文使用的是hadoop-2.6.4.tar.gz
的預編譯版本。
step1:ssh免密碼登陸,經過命令ssh-keygen -t rsa
生成公鑰和私鑰,生成過程當中會要求輸入密鑰生成的位置等,一路直接回車便可sql
[hadoop@hadoop ~]$ ssh-keygen -t rsa -P '' Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Created directory '/home/hadoop/.ssh'. Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: d7:53:fb:dd:86:61:48:c1:26:a6:ae:fa:14:96:e0:93 hadoop@hadoop.hadoop The key's randomart image is: +--[ RSA 2048]----+ | .. | | o o. | | . o o. . | | . o .. o o . | | E +.S . + + | | o ... o +o| | .. . =| | .. . | | .o. | +-----------------+ [hadoop@hadoop ~]$ ls .ssh/ id_rsa id_rsa.pub
公鑰和私鑰默認會生成在~/.ssh
目錄下,其中id_rsa
是私鑰,id_rsa.pub
是公約,若是想要在遠程機器上免密碼登陸到本機的該用戶下,將遠程機器的公鑰加入到~/.ssh/authorized_keys
文件中便可實現免密碼登陸,因爲咱們的集羣就是一臺單機,,因此只須要免密碼登陸本機便可,因此只需將本機的公鑰加入authorized_keys文件數據庫
[hadoop@hadoop ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [hadoop@hadoop ~]$ ssh localhost The authenticity of host 'localhost (::1)' can't be established. RSA key fingerprint is ac:a4:52:70:a3:68:d9:bd:59:42:0a:6a:68:ab:6f:dd. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (RSA) to the list of known hosts. hadoop@localhost's password:
嘗試登錄本機發現仍是須要密碼,百思不得其解,google以後發現:若是但願ssh公鑰生效需知足至少下面兩個條件:apache
ssh目錄的權限必須是700vim
ssh/authorized_keys文件權限必須是600
詳見:《遠程登錄不要密碼,使用authorized_keys不生效的解決方法》
修改密鑰文件的訪問權限
[hadoop@hadoop ~]$ chmod 700 ~/.ssh/ [hadoop@hadoop ~]$ chmod 600 ~/.ssh/authorized_keys [hadoop@hadoop ~]$ ssh localhost Last login: Tue Sep 13 11:27:48 2016 from localhost [hadoop@hadoop ~]$
順利免密碼登陸到本機,SSH免密碼登陸搞定,若是配置分佈式Hadoop集羣,只需將多臺多臺機器的公鑰文件加入到authorized_keys文件便可。
step2:Hadoop安裝
解壓文件
[hadoop@hadoop ~]$ cd ~/Downloads/ [hadoop@hadoop Downloads]$ ll 總用量 191424 -rwxr-xr-x. 1 root root 196015975 9月 9 07:39 hadoop-2.6.4.tar.gz [hadoop@hadoop Downloads]$ sudo mv hadoop-2.6.4.tar.gz /usr/local/ [sudo] password for hadoop: [hadoop@hadoop Downloads]$ cd /usr/local/ [hadoop@hadoop Downloads]$ sudo tar -zxvf hadoop-2.6.4.tar.gz ……省略…… [hadoop@hadoop local]$ sudo rm -rf hadoop-2.6.4.tar.gz
配置hadoop
1):編輯hadoop-2.6.4/etc/hadoop/core-site.xml
文件,在configuration節點下增長如下配置:
<property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
配置項hadoop.tmp.dir
配置的是Hadoop的臨時文件夾,fs.defaultFS
配置的是Hadoop dfs的IP和端口號。
2):編輯hadoop-2.6.4/etc/hadoop/hdfs-site.xml
文件,在configuration節點下增長如下配置:
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/data/hadoop/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/hadoop/data</value> </property>
dfs.replication
配置複製因子,即每一個hdfs塊複製幾份。 dfs.namenode.name.dir
:設置hdfs的元數據保存路徑。 dfs.datanode.data.dir
:設置hdfs數據保存路徑
3):編輯hadoop-2.6.4/etc/hadoop/mapred-site.xml
文件,在configuration節點下增長如下配置:
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>localhost:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>localhost:19888</value> </property>
4):編輯hadoop-2.6.4/etc/hadoop/yarn-site.xml
文件,在configuration節點下增長如下配置:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>localhost:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>localhost:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>localhost:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>localhost:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>localhost:8088</value> </property>
5):編輯hadoop-2.6.4/etc/hadoop/yarn-site.xml
文件,將25行,export JAVA_HOME=${JAVA_HOME}
修改成:export JAVA_HOME=/usr/local/jdk1.8.0
6):建立相應的數據文件夾,並將hadoop目錄以及數據目錄全部者修改成hadoop用戶:
[hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/tmp [hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/name [hadoop@hadoop hadoop]$ sudo mkdir -p /data/hadoop/data [hadoop@hadoop hadoop]$ sudo chown -R hadoop:hadoop /data [hadoop@hadoop hadoop]$ sudo chown -R hadoop:hadoop /usr/local/hadoop-2.6.4
配置環境變量
編輯'/etc/profile'文件(對全部用戶生效,若是隻想對當前用戶生效也能夠在~/.bashrc
或者~/.bash_profile
文件中添加) 添加下面的配置項:
export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
編輯完成以後執行source /etc/profile
命令,使配置生效。
格式化hdfs:執行指令hdfs namenode -format
對HDFS進行格式化:
[hadoop@hadoop hadoop-2.6.4]$ hdfs namenode -format ……省略…… 16/09/13 15:54:53 INFO common.Storage: Storage directory /data/hadoop/name has been successfully formatted. 16/09/13 15:54:53 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 16/09/13 15:54:53 INFO util.ExitUtil: Exiting with status 0 16/09/13 15:54:53 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1 ************************************************************/
若是看到Storage directory /data/hadoop/name has been successfully formatted.
這樣的字樣,表示hdfs已經完成格式化。
啓動hadoop
執行指令start-all.sh
或者分別執行start-dfs.sh
和start-yarn.sh
,便可啓動hadoop,執行指令jps
驗證hadoop是否啓動正常
[hadoop@hadoop hadoop-2.6.4]$ start-all.sh ……省略…… [hadoop@hadoop hadoop-2.6.4]$ jps 18513 ResourceManager 18919 NameNode 19403 NodeManager 19517 Jps 19198 SecondaryNameNode 19039 DataNode
jps指令執行結果應該看到如下幾個進程:
ResourceManager
NodeManager
NameNode
SecondaryNameNode
DataNode
若是能看到以上幾個進程,表示本機的hadoop已經配置完成,並正常啓動。
step1:MySQL安裝
在centOS中可使用yum安裝mysql,執行命令sudo yum -y install mysql-server
[hadoop@hadoop hadoop-2.6.4]$ sudo yum -y install mysql-server ……省略……
step2:建立hive元數據數據庫
使用指令 mysql -u root
登陸mysql數據庫,初始安裝默承認不用密碼直接登陸。能夠登陸以後使用對應的語句修改用戶密碼。
[hadoop@hadoop hadoop-2.6.4]$ mysql -u root ……省略…… mysql> create database hive_metastore; Query OK, 1 row affected (0.00 sec)
step3:建立帳號並受權
mysql> create user 'hive'@'%' identified by 'hive'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on hive_metastore.* to 'hive'@'%' identified by 'hive' with grant option; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
到此mysql已經安裝完成,併成功爲hive建立了元數據數據庫。
step1:下載hive
讀者能夠上hive官方網站上進行下載,本文使用的是Hive2.0.0預編譯版本。
step2:解壓,我將hive安裝到/usr/local
目錄下
[hadoop@hadoop local]$ sudo mv ~/Download/apache-hive-2.0.0-bin.tar.gz /usr/local/ [hadoop@hadoop local]$ cd /usr/local/ [hadoop@hadoop local]$ sudo tar -zxvf apache-hive-2.0.0-bin.tar.gz ……省略…… [hadoop@hadoop local]$ sudo rm -f apache-hive-2.0.0-bin.tar.gz
step3:hive配置
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property><name>hive.metastore.local</name><value>true</value></property> <property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://127.0.0.1:3306/hive_metastore?characterEncoding=UTF-8</value></property> <property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property> <property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property> <property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value></property> </configuration>
step4:mysql JDBC驅動安裝
上mysql官網(http://dev.mysql.com/download...下載mysql的JDBC驅動包,將jdbc驅動包拷貝到 $HIVE_HOME/lib
目錄下
[hadoop@hadoop Download]$ tar -zxvf mysql-connector-java-5.1.39.tar.gz ……省略…… [hadoop@hadoop Download]$ sudo cp mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar /usr/local/apache-hive-2.0.0-bin/lib/
step5:建立Hive元數據schema
hive的bin目錄下有一個腳本schematool
能夠用於建立schema,執行命令./schematool -initSchema -dbType ...
便可建立hive元數據的schema
[hadoop@hadoop bin]$ ./schematool -initSchema -dbType mysql ……省略…… Initialization script completed schemaTool completed
step6:配置環境變量
編輯/etc/profile
文件,添加一下配置信息,並執行source /etc/profile
使配置生效
export HIVE_HOME=/usr/local/pache-hive-2.0.0-bin export PATH=$PATH:$HIVE_HOME/bin
step7:驗證
[hadoop@hadoop ~]$ hive -S ……省略…… hive>
若是可以正確啓動hive cli工具,說明hive的安裝和配置已經完成。
Hive的命令行工具和mysql的命令行工具十分類似,也提供了一些好比查看庫或者表等指令,熟悉mysql的能夠應該不會陌生。 其中有些指令用於參數設置,至於參數的具體含義,後續文章會介紹。
hive> create database testDB; hive> use testDB; hive> create table if not exists test_tbl_01(col1 string,col2 int); hive> insert into test_tbl_01 values('test string',1); hive> select * from test_tbl_01; test string 1 hive> set hive.cli.print.header=true; hive> select * from test_tbl_01; test_tbl_01.col1 test_tbl_01.col2 test string 1 hive> set hive.cli.print.current.db=true; hive (testDB)> desc test_tbl_01; col_name data_type comment col1 string col2 int hive (testDB)>