1、前置
**注:本文中並未說起mysql的安裝,在安裝hive時須要安裝mysql,並設置權限,請讀者自行查詢方法。
且:把包放在系統目錄下,如/usr或/opt此類目錄下,須要使用chmod命令修改權限,不然頗有可能出現權限不足沒法執行的狀況。**html
1.1建立Hadoop用戶java
$ 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用戶
1.2安裝SSHnode
$ sudo apt-get install openssh-server #安裝SSH server $ ssh localhost #登錄SSH,第一次登錄輸入yes $ exit #退出登陸的ssh localhost $ cd ~/.ssh/ #若是無法進入該目錄,執行一次ssh localhost $ ssh-keygen -t rsa
在輸入完 $ ssh-keygen -t rsa 命令時,須要連續敲擊回車三次mysql
其中,第一次回車是讓KEY存於默認位置,以方便後續的命令輸入。第二次和第三次是肯定passphrase,相關性不大。兩次回車輸入完畢之後,若是出現相似於下圖所示的輸出,即成功:
圖片描述sql
以後輸入shell
$ cat ./id_rsa.pub >> ./authorized_keys #加入受權 $ ssh localhost #此時已不需密碼便可登陸localhost,並可見下圖。若是失敗則能夠搜索SSH免密碼登陸來尋求答案
2、安裝JDK1.8.0_221
首先在oracle官網下載JDK1.8.0_221
http://www.oracle.com/technet... 接下來進行安裝與環境變量配置,也能夠在百度直接搜索下載安裝(避免oracle的平常抽風)數據庫
$ mkdir /usr/lib/jvm #建立jvm文件夾 $ sudo tar zxvf 你的jdk文件名 -C /usr/lib #/解壓到/usr/lib/jvm目錄下 $ cd /usr/lib/jvm #進入該目錄 $ mv jdk1.8.0_221 java #重命名爲java $ vi ~/.bashrc #給JDK配置環境變量
注:其中若是權限不夠,沒法在相關目錄下建立jvm文件夾,那麼可使用 $ sudo -i 語句進入root帳戶來建立文件夾。apache
$ vim ~/.bashrc
注:若沒有vim能夠用gedit代替或使用sudo apt安裝vim
在 ~/.bashrc 文件中添加以下代碼vim
#Java Environment 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版本
若出現Java版本即爲安裝成功
3、安裝Hadoop3.2.0
先下載hadoop-3.2.0.tar.gz
hadoop-3.2.1與hive會產生包衝突異常,因此使用hadoop-3.2.0,具體解決辦法未知。
連接以下:
https://archive.apache.org/dist/hadoop/common/
進行安裝
$ sudo tar -zxvf hadoop-3.2.0.tar.gz -C /usr/local #解壓到/usr/local目錄下 $ cd /usr/local $ sudo mv hadoop-3.2.0 hadoop #重命名爲hadoop $ sudo chown -R hadoop ./hadoop #修改文件權限
給hadoop配置環境變量,將下面代碼添加到.bashrc文件:
#Hadoop Environment 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
一樣,執行source ~./bashrc使設置生效,並查看hadoop是否安裝成功,若出現hadoop版本即爲安裝成功
4、僞分佈式配置
Hadoop 能夠在單節點上以僞分佈式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既做爲 NameNode 也做爲 DataNode。同時,讀取的是 HDFS 中的文件。Hadoop 的配置文件位於 /usr/local/hadoop/etc/hadoop/ 中,僞分佈式須要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每一個配置以聲明 property 的 name 和 value 的方式來實現。首先將jdk1.8的路徑添(export JAVA_HOME=/usr/lib/jvm/java )加到hadoop-env.sh文件
接下來修改core-site.xml文件:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
修改hdfs-site.xml文件:
<configuration>
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> <property> <name>dfs.http.address</name> <value>0.0.0.0:50070</value> </property>
</configuration>
Hadoop 的運行方式是由配置文件決定的(運行 Hadoop 時會讀取配置文件),所以若是須要從僞分佈式模式切換回非分佈式模式,須要刪除 core-site.xml 中的配置項。此外,僞分佈式雖然只須要配置 fs.defaultFS 和 dfs.replication 就能夠運行(可參考官方教程),不過若沒有配置 hadoop.tmp.dir 參數,則默認使用的臨時目錄爲 /tmp/hadoo-hadoop,而這個目錄在重啓時有可能被系統清理掉,致使必須從新執行 format 才行。因此咱們進行了設置,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,不然在接下來的步驟中可能會出錯。
配置完成後,執行 NameNode 的格式化
$ ./bin/hdfs namenode -format
啓動namenode和datanode進程,並查看啓動結果
$ ./sbin/start-dfs.sh $ jps
啓動完成後,能夠經過命令 jps 來判斷是否成功啓動,若成功啓動則會列出以下進程: 「NameNode」、」DataNode」 和 「SecondaryNameNode」
圖中只需有四個進程"JPS" "NameNode" "DateNode" "SecondaryNameNode"便可
此時也有可能出現要求輸入localhost密碼的狀況 ,若是此時明明輸入的是正確的密碼卻仍沒法登入,其緣由是因爲若是不輸入用戶名的時候默認的是root用戶,可是安全期間ssh服務默認沒有開root用戶的ssh權限
輸入代碼:
$vim /etc/ssh/sshd_config
檢查PermitRootLogin 後面是否爲yes,若是不是,則將該行代碼 中PermitRootLogin 後面的內容刪除,改成yes,保存。以後輸入下列代碼重啓SSH服務:
$ /etc/init.d/sshd restart
成功啓動後,在瀏覽器中輸入localhost:50070會出現如下頁面
5、安裝Hive-3.1.2
一、經過百度下載Hive-3.1.2的tar包
連接以下:
http://mirror.bit.edu.cn/apac...
二、解壓Hive到/opt目錄下
$ tar zxf apache-hive-3.1.2-bin.tar.gz $ sudo mv apache-hive-3.1.2-bin /opt/hive-2.3.3
三、配置Hive環境變量
$ vim ~/.bashrc
在bashrc文件中添加以下代碼,如需修改權限請使用chmod命令
#Hive Enviroment export HIVE_HOME=/opt/hive export PATH=$PATH:$HIVE_HOME/bin
四、在/opt/hive/conf目錄下建立hive-site.xml,並添加如下代碼在文件中
<configuration> <property> <name>hive.metastore.schema.verification</name> <value>false</value> <description> Enforce metastore schema version consistency. True: Verify that version information stored in metastore matches with one from Hive jars. Also disable automatic schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures proper metastore schema migration. (Default) False: Warn if the version information stored in metastore doesn't match with one from in Hive jars. </description> </property> <!-- 存儲在hdfs上的數據路徑 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> <!-- 本地mysql --> <property> <name>hive.metastore.local</name> <value>true</value> </property> <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.ConnectionPassword</name> <value>你的數據庫密碼</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>Username to use against metastore database</description> </property> </configuration>
在/opt/hive/conf下執行該命令
$ cp hive-env.sh.template hive-env.sh
五、將JDBC的jar包拷貝在/opt/hive/lib目錄下
六、在/opt/hive/bin目錄下執行如下命令
$ ./schematool -dbType mysql -initSchema $ ./schematool -dbType mysql -info $ hive
執行完hive命令後便可使用Hive