1. 程式人生 > 其它 >安裝JDK,免金鑰,叢集Hadoop

安裝JDK,免金鑰,叢集Hadoop

一、linux下JDK的安裝

1. 下載並解壓

官網 下載所需版本的 JDK,這裡我下載的版本為JDK 1.8 ,下載後進行解壓:

1 [root@linux01 ~]# tar -zxvf jdk-8u321-linux-x64.tar.gz

2. 設定環境變數

1 [root@linux01 ~]# vi /etc/profile

新增如下配置:(注意JDK資料夾名,不同版本解壓後文件名不同,與其版本號相同)

1 export JAVA_HOME=/usr/java/jdk1.8.0_321  
2 export JRE_HOME=${JAVA_HOME}/jre  
3 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
4 export PATH=${JAVA_HOME}/bin:$PATH

執行 source 命令,使得配置立即生效:

[root@linux01 ~]# source /etc/profile

 檢查是否安裝成功

[root@linux01 ~]#java -version
顯示出對應的版本資訊則代表安裝成功。
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

二、配置免密登入

2.1 生成密匙

在每臺主機上使用 ssh-keygen 命令生成公鑰私鑰對

[root@linux01 .ssh]#ssh-keygen -t dsa -f ~/.ssh/id_dsa

-t 指定金鑰型別,預設是 rsa ,可以省略。
-f 指定金鑰檔案儲存檔名。

那麼就會生成 id_rsa 和 id_rsa.pub 兩個祕鑰檔案,/root/.ssh目錄下ll命令可看。

 

接著又會提示你輸入兩次密碼(該密碼是你push檔案的時候要輸入的密碼),可以不輸入密碼,直接按回車(免金鑰嘛,就別密碼了,直接回車)。

2.2 免密登入

2.2.1 把公鑰分發到其他節點 :

1 [root@linux01 .ssh]# scp ./id_dsa.pub linux02:/root/.ssh/node01.pub
2 [root@linux01 .ssh]# scp ./id_dsa.pub linux03:/root/.ssh/node01.pub

這樣在Linux02,03節點上/root/.ssh/目錄下都有node01.pub這個公鑰,可以去檢視,驗證是否成功。

2.2.2 將 linux01 的公鑰寫到本機和遠端機器的 ~/ .ssh/authorized_key 檔案中:

1 [root@linux01 .ssh]#cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
2 [root@linux02 .ssh]#cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3 [root@linux03 .ssh]#cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

可看到/root/.ssh目錄下多了一個authorized_keys,其內容與id_dsa.pub相同。

2.2.3 現在可以驗證登入了

1 [root@linux01 .ssh]# ssh linux02
2 [root@linux01 .ssh]# ssh linux03

結果會如下所示

 1 [root@linux01 .ssh]# ssh linux02
 Last login: Sat Mar 19 18:03:14 2022 from linux01
 2 [root@linux02 ~]# exit
 logout
 Connection to linux02 closed.
 3 [root@linux01 .ssh]# ssh linux03
 Last login: Sat Mar 19 18:04:15 2022 from linux01
 4 [root@linux03 ~]# exit
 logout
   Connection to linux03 closed.

三、Hadoop叢集搭建

3.1 修改配置

1. hadoop-env.sh

# 指定JDK的安裝位置
export JAVA_HOME=/usr/java/jdk1.8.0_321/

2. core-site.xml

 1 <configuration>
 2     <property>
 3         <!--指定 namenode 的 hdfs 協議檔案系統的通訊地址-->
 4         <name>fs.defaultFS</name>
 5         <value>hdfs://hadoop001:8020</value>
 6     </property>
 7     <property>
 8         <!--指定 hadoop 叢集儲存臨時檔案的目錄-->
 9         <name>hadoop.tmp.dir</name>
10         <value>/home/hadoop/tmp</value>
11     </property>
12 </configuration>

3. hdfs-site.xml

<configuration>
      <property>
          <!--namenode 節點資料(即元資料)的存放位置,可以指定多個目錄實現容錯,多個目錄用逗號分隔-->
          <name>dfs.namenode.name.dir</name>
          <value>/home/hadoop/namenode/data</value>
      </property>
      <property>
          <!--datanode 節點資料(即資料塊)的存放位置-->
          <name>dfs.datanode.data.dir</name>
          <value>/home/hadoop/datanode/data</value>
      </property>
      <property> 
          <!--指定hdfs儲存資料的副本數量--> 
          <name>dfs.replication</name>
          <value>2</value>
      </property>
      <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>linux02:50090</value>
      </property>
 </configuration>  

4. yarn-site.xml

<configuration>
    <property>
        <!--配置 NodeManager 上執行的附屬服務。需要配置成 mapreduce_shuffle 後才可以在 Yarn 上執行 MapReduce 程式。-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <!--resourcemanager 的主機名-->
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop001</value>
    </property>
</configuration>

5. mapred-site.xml

<configuration>
    <property>
        <!--指定 mapreduce 作業執行在 yarn 上-->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

6. slaves

配置所有從屬節點的主機名或 IP 地址,每行一個。所有從屬節點上的 DataNode 服務和 NodeManager 服務都會被啟動。

1 linux02
2 linux03

3.2 分發程式

將 Hadoop 安裝包分發到其他兩臺伺服器,分發後建議在這兩臺伺服器上也配置一下 Hadoop 的環境變數。

[root@linux01 software]# scp -r ./hadoop-2.7.2 linux02:'pwd'
[root@linux01 software]# scp -r /usr/software/hadoop-2.7.2 linux03:/usr/software

以上兩行程式碼是相同作用,第一行中“./”中的點表示當前目錄,'pwd'表示路徑。