在 kali linux 下搭建 hadoop 偽分散式系統
記錄在 kali linux 下搭建 hadoop 偽分散式的過程:
1. 安裝和設定 JDK:
1) kali 中預設已經安裝 Java,可以使用 java -version 檢查 Java的安裝情況;發現 java 的安裝檔名可能是 openjdk
2) 可以設定 java 的 JAVA_HOME, PATH, CLASSPATH:
2.1 ) 使用 find / -iname "*openjdk*", 查詢 JDK 的安裝位置; 發現 /usr/lib/jvm下有幾個 符合 openjdk 的檔案;
2.2) 通過使用 ls -l 檢視詳情,發現 3個檔案中,2個是連結檔案,只有1個檔案是真實的 Jdk 安裝目錄;
2.3 ) 進入openjdk目錄,果然發現熟悉的 bin,dt.jar 等檔案,正是 jdk 的安裝目錄;
2.4 ) 可以在以下位置設定 環境變數: /etc/profile, or , ~/.bashrc 檔案中;設定語句如下:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2. 安裝 SSH:
1) 先檢查 SSH 的安裝情況: ps -e | grep ssh, 預設情況下 kali 只安裝了 ssh - client, 沒有 ssh - server
2 ) 使用 apt-get install openssh-server 安裝 ssh 伺服器
安裝過程中,發現 163 的源部分元件沒有,安裝失敗,於是切換 搜狐的源:搜狐源地址網上能找到,編輯下列檔案:
/etc/apt/sours.list 檔案,刪除 163 源,改成 搜狐源,然後 ssh 安裝成功
3) 安裝完成後,使用 ps -e | grep ssh, 發現沒有 sshd 服務,ssh伺服器沒有成功啟動
4) 轉到目錄: /etc/init.d, 其中 發現 ssh 已經安裝
5) 使用命令: service ssh start 啟動服務
6) 再次使用 ps -e | grep ssh, 發現 sshd 服務已經正常啟動
7) 根據 hadoop 要求, ssh的通訊需要取消ssh密碼,通過下列語句實現:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
8) 使用 ssh localhost 命令,發現 已經成功連線, 同時沒有提示需要密碼,ssh 成功安裝
3. 安裝 hadoop:
1) 下載,然後選擇目錄安裝: tar -xzvf hadoop-x.y.z.tar.gz
2) 在 hadoop 的安裝目錄下, 設定 etc/hadoop/hadoop-env.sh 檔案中的 JAVA_HOME 路徑:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
3) 在 /etc/profile 中設定 hadoop 環境變數
export HADOOP_HOME=/root/Codingtool/hadoop/hadoop-3.0.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4) 測試 hadoop 安裝情況: hadoop version, 正常輸出,初步安裝成功
5) 設定 hadoop, 按照 偽分散式的方式設定:
設定配置檔案:core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml, 在安裝目錄下的 etc/hadoop 中;
6) 格式化 HDFS 檔案系統:
hdfs namenode -format
4. 啟動 Hadoop:
1) 在 Hadoop 的安裝目錄下,sbin/ 下,執行 ./start-all.sh
2) 執行結果提示 hadoop 系統中 root 使用者未註冊,每個啟動的服務都是類似的問題,於是按照 百度的資料更改設定檔案:
》在 hadoop 安裝目錄,修改: sbin/start-dfs.sh, sbin/stop-dfs.sh:
在 start-dfs.sh 檔案中, # Start hadoop dfs daemons. 註釋前加上:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在 stop-dfs.sh 檔案中做類似修改;
》在 hadoop 安裝目錄,修改: sbin/start-yarn.sh, sbin/stop-yarn.sh:
在 yarn-dfs.sh 檔案中, # ## @description usage info. 註釋前加上:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
在 stop-yarn.sh 檔案中做類似修改;
3) 再次執行 ./start-all.sh :
namenodes, datanodes, secondary namenodes, resourcemanager, nodemanagers 都成功啟動