一.實驗目的
1. 掌握Linux虛擬機器的安裝方法。
2. 掌握Hadoop的偽分散式安裝方法。
二.實驗內容
(一)Linux基本操作命令
Linux常用基本命令包括:
ls,cd,mkdir,rm,man,cat,ssh,yum,vim,vi等。
(二)安裝JDK
Hadoop是Java實現的,執行在Java虛擬機器上,安裝JDK並設定JAVA環境變數。
(三)配置各節點間無密碼驗證
Hadoop叢集的啟動需要通過SSH啟動各從節點,需要配置各節點之間SSH無密碼驗證。
(四)配置和啟動Hadoop分散式叢集
Hadoop有三種配置:單擊模式、偽分散式模式(單臺節點模擬分散式)和分散式模式,本實驗是配置偽分散式模式的Hadoop。
三.實驗環境
VMWare15 Pro、Ubuntu16.04、Hadoop3.2.1。
四.實驗步驟和完成情況
1. VMware 15安裝Ubuntu 16.04並配置環境
https://www.cnblogs.com/caoer/p/12669183.html
2. 建立hadoop使用者
1)建立hadoop使用者,並使用/bin/bash作為shell: sudo useradd -m hadoop -s /bin/bash
2) 為hadoop使用者設定密碼,之後需要連續輸入兩次密碼: sudo passwd hadoop
3) 為hadoop使用者增加管理員許可權:sudo adduser hadoop sudo
4) 切換當前使用者為使用者hadoop: su – hadoop
5) 更新hadoop使用者的apt: sudo apt-get update
3. JDK安裝和Java環境變數配置
(1)安裝 JDK 1.7
hadoop使用者登陸,下載JDK安裝包, 個人電腦系統選擇對應版本,我選的是jzxvf jdk-7u80-linux-x64.tar.gz,輸入命令:
$ mkdir /usr/lib/jvm #建立jvm資料夾
$ sudo tar zxvf jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm #/ 解壓到/usr/lib/jvm目錄下
$ cd /usr/lib/jvm #進入該目錄
$ mv jdk1.7.0_80 java #重新命名為java
$ vi ~/.bashrc #給JDK配置環境變數
其中如果許可權不夠,無法在相關目錄下建立jvm資料夾,那麼可以使用 $ sudo -i 語句進入root賬戶來建立資料夾。
(2)Java環境變數配置
root使用者登陸,命令列中執行命令”vi /etc/profile”,按I並加入以下內容,配置環境變數(注意/etc/profile這個檔案很重要,後面Hadoop的配置還會用到)。
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版本
4. 配置所有節點之間SSH無密碼驗證
以節點A和B兩個節點為例,節點A要實現無密碼公鑰認證連線到節點B上時,節點A是客戶端,節點B是服務端,需要在客戶端A上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到服務端B上。當客戶端A通過ssh連線服務端B時,服務端B就會生成一個隨機數並用客戶端A的公鑰對隨機數進行加密,併傳送給客戶端A。客戶端A收到加密數之後再用私鑰進行解密,並將解密數回傳給B,B確認解密數無誤之後就允許A進行連線了。這就是一個公鑰認證過程,其間不需要使用者手工輸入密碼。重要過程是將客戶端A公鑰複製到B上。
因此如果要實現所有節點之間無密碼公鑰認證,則需要將所有節點的公鑰都複製到所有節點上。
(1)安裝ssh: sudo apt-get install openssh-server
登入ssh:ssh localhost
退出登入的ssh localhost:exit
(2)進入ssh目錄:cd ~/.ssh/
(a)節點用hadoop使用者登陸,並執行以下命令,生成rsa金鑰對:
ssh-keygen -t rsa (回車後敲擊三次回車)
這將在/home/hadoop/.ssh/目錄下生成一個私鑰id_rsa和一個公鑰id_rsa.pub。
(c)加入授權:cat ./id_rsa.pub >> ./authorized_keys
這樣配置過後SSH無密碼登陸,可以通過命令“ssh localhost”來驗證。
5. Hadoop叢集配置
使用hadoop使用者登陸,下載hadoop-3.2.1.tar.gz,將其解壓到/usr/local/hadoop目錄下: sudo tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local,進入目錄:cd /usr/local,重新命名為hadoop: sudo mv hadoop-3.2.1 hadoop,修改檔案許可權:sudo chown -R hadoop ./hadoop。
給hadoop配置環境變數:
(1)開啟bashrc檔案:vi ~/.bashrc
(2)加入以下程式碼:
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
(3)儲存更改並生效:source ~/.bashrc。
$hadoop version 檢視hadoop是否安裝成功。
6. Hadoop叢集啟動
Hadoop 的配置檔案位於 /usr/local/hadoop/etc/hadoop/ 中,偽分散式需要修改2個配置檔案 core-site.xml 和 hdfs-site.xml 。Hadoop的配置檔案是 xml 格式,每個配置以宣告 property 的 name 和 value 的方式來實現。
a) 首先將jdk1.8的路徑添(export JAVA_HOME=/usr/lib/jvm/java )加到hadoop-env.sh檔案。
$ cd /usr/local/hadoop/etc/hadoop/
$ vim hadoop-env.sh
b) 修改core-site.xml:vim 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>
c) 修改配置檔案 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>
</configuration>
d) 配置完成後,執行 NameNode 的格式化
$ cd /usr/local/hadoop/
$ ./bin/hdfs namenode -format
e) 啟動namenode和datanode程式,並檢視啟動結果
$ ./sbin/start-dfs.sh
$ jps
f) 成功啟動後,可以訪問 Web 介面 http://localhost:9870 檢視 NameNode 和 Datanode 資訊,還可以線上檢視 HDFS 中的檔案。
至此Hadoop安裝就結束啦,以上為個人大資料學習成長曆程~