大数据学习(2-1)-Hadoop安装教程-单机模式和伪分布模式(Ubuntu14.04LTS)
文章目錄
- 目錄
- 1.linxu的安裝
- 1.1安裝Linux虛擬機
- 1.2安裝Linux和Windows雙系統
- 2.Hadoop的安裝
- 2.1 Hadoop安裝前配置
- 2.1.1 配置Hadoop用戶
- 2.1.2 安裝 ssh , 配置ssh免密登錄
- 2.1.3 安裝java環境
- 2.2 Hadoop的安裝
- 3.Hadoop單機版配置
- 4.Hadoop偽分布版配置
目錄
1.linxu的安裝
1.1安裝Linux虛擬機
可以通過在Windows上安裝Linux虛擬機,具體安裝教程百度,此教程步纖細介紹
1.2安裝Linux和Windows雙系統
可以通過安裝windows和Linux雙系統,具體教程百度,此教程不詳細介紹
2.Hadoop的安裝
在安裝好Linux操作系統后,就可以安裝Hadoop了
2.1 Hadoop安裝前配置
2.1.1 配置Hadoop用戶
- 1.創建Hadoop用戶:sudo useradd -m hadoop -s /bin/bash
- 2.為創建的Hadoop用戶創建登錄密碼:sudo passwd hadoop
- 3.將創建的Hadoop用戶加入到管理員組:sudo adduser hadoop sudo
2.1.2 安裝 ssh , 配置ssh免密登錄
- 1.安裝ssh-server : sudo apt-get install openssh-server
- 2.測試是否安裝成功:ssh localhost
出現上面的即表示ssh安裝成功 - 3.設置ssh免密登錄:
- 4.此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了,如下圖所示
2.1.3 安裝java環境
ava環境可選擇 Oracle 的 JDK,或是 OpenJDK,按中說的,新版本在 OpenJDK 1.7 下是沒問題的。為圖方便,這邊直接通過命令安裝 OpenJDK 7。
下面有兩種安裝JDK的方式,可以任選一種,如果第1種失敗,就選擇第2種。推薦直接使用第2種安裝方式。
(1)第1種安裝JDK方式:
安裝好 OpenJDK 后,需要找到相應的安裝路徑,這個路徑是用于配置 JAVA_HOME 環境變量的。執行如下命令:
dpkg -L openjdk-7-jdk | grep '/bin/javac'該命令會輸出一個路徑,除去路徑末尾的 “/bin/javac”,剩下的就是正確的路徑了。如輸出路徑為 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,則我們需要的路徑為 /usr/lib/jvm/java-7-openjdk-amd64。
接著需要配置一下 JAVA_HOME 環境變量,為方便,我們在 ~/.bashrc 中進行設置(擴展閱讀: 設置Linux環境變量的方法和區別):
vim ~/.bashrc在文件最前面添加如下單獨一行(注意 = 號前后不能有空格),將“JDK安裝路徑”改為上述命令得到的路徑,并保存:
export JAVA_HOME=JDK安裝路徑如下圖所示(該文件原本可能不存在,內容為空,這不影響):
接著還需要讓該環境變量生效,執行如下代碼:
source ~/.bashrc # 使變量設置生效設置好后我們來檢驗一下是否設置正確:
echo $JAVA_HOME # 檢驗變量值 java -version $JAVA_HOME/bin/java -version # 與直接執行 java -version 一樣如果設置正確的話,$JAVA_HOME/bin/java -version 會輸出 java 的版本信息,且和 java -version 的輸出結果一樣,如下圖所示:
這樣,Hadoop 所需的 Java 運行環境就安裝好了。
(2)第2種安裝JDK方式
根據大量電腦安裝Java環境的情況我們發現,部分電腦按照上述的第一種安裝方式會出現安裝失敗的情況,這時,可以采用這里介紹的另外一種安裝方式,命令如下:
上述安裝過程需要訪問網絡下載相關文件,請保持聯網狀態。安裝結束以后,需要配置JAVA_HOME環境變量,請在Linux終端中輸入下面命令打開當前登錄用戶的環境變量配置文件.bashrc:
vim ~/.bashrc在文件最前面添加如下單獨一行(注意,等號“=”前后不能有空格),然后保存退出:
export JAVA_HOME=/usr/lib/jvm/default-java
接下來,要讓環境變量立即生效,請執行如下代碼:
執行上述命令后,可以檢驗一下是否設置正確:
echo $JAVA_HOME # 檢驗變量值 java -version $JAVA_HOME/bin/java -version # 與直接執行java -version一樣至此,就成功安裝了Java環境。下面就可以進入Hadoop的安裝。
2.2 Hadoop的安裝
1.去網站下載最新的Hadoop未定版本
2.我們選擇將 Hadoop 安裝至 /usr/local/ 中:
3.Hadoop 解壓后即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息:
cd /usr/local/hadoop ./bin/hadoop version相對路徑與絕對路徑
請務必注意命令中的相對路徑與絕對路徑,本文后續出現的 ./bin/…,./etc/… 等包含 ./ 的路徑,均為相對路徑,以 /usr/local/hadoop 為當前目錄。例如在 /usr/local/hadoop 目錄中執行 ./bin/hadoop version 等同于執行 /usr/local/hadoop/bin/hadoop version。可以將相對路徑改成絕對路徑來執行,但如果你是在主文件夾 ~ 中執行 ./bin/hadoop version,執行的會是 /home/hadoop/bin/hadoop version,就不是我們所想要的了。
3.Hadoop單機版配置
Hadoop 默認模式為非分布式模式(本地模式),無需進行其他配置即可運行。非分布式即單 Java 進程,方便進行調試。
現在我們可以執行例子來感受下 Hadoop 的運行。Hadoop 附帶了豐富的例子(運行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。
在此我們選擇運行 grep 例子,我們將 input 文件夾中的所有文件作為輸入,篩選當中符合正則表達式 dfs[a-z.]+ 的單詞并統計出現的次數,最后輸出結果到 output 文件夾中。
cd /usr/local/hadoop mkdir ./input cp ./etc/hadoop/*.xml ./input # 將配置文件作為輸入文件 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+' cat ./output/* # 查看運行結果執行成功后如下所示,輸出了作業的相關信息,輸出的結果是符合正則的單詞 dfsadmin 出現了1次
注意,Hadoop 默認不會覆蓋結果文件,因此再次運行上面實例會提示出錯,需要先將 ./output 刪除。
rm -r ./output4.Hadoop偽分布版配置
Hadoop 可以在單節點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,偽分布式需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。
修改配置文件 core-site.xml (通過 gedit 編輯會比較方便: gedit ./etc/hadoop/core-site.xml),將當中的
<configuration> </configuration>修改為下面配置:
<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 的運行方式是由配置文件決定的(運行 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成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯。
如果在這一步時提示 Error: JAVA_HOME is not set and could not be found. 的錯誤,則說明之前設置 JAVA_HOME 環境變量那邊就沒設置好,請按教程先設置好 JAVA_HOME 變量,否則后面的過程都是進行不下去的。如果已經按照前面教程在.bashrc文件中設置了JAVA_HOME,還是出現 Error: JAVA_HOME is not set and could not be found. 的錯誤,那么,請到hadoop的安裝目錄修改配置文件“/usr/local/hadoop/etc/hadoop/hadoop-env.sh”,在里面找到“export JAVA_HOME=${JAVA_HOME}”這行,然后,把它修改成JAVA安裝路徑的具體地址,比如,“export JAVA_HOME=/usr/lib/jvm/default-java”,然后,再次啟動Hadoop。
在進行Hadoop節點格式化時候出現“Starting resourcemanager ERROR: Unable to write in /home/zhang/opt/hadoop-3.1.0/logs. Aborting.”和“Cannot create directory”錯誤,則是文件權限的問題。運行命令:
加入-R 參數,將讀寫權限傳遞給子文件夾 chmod -R 777 /logs 加入-R 參數,將讀寫權限傳遞給子文件夾 chmod -R 777 /tmp接著開啟 NameNode 和 DataNode 守護進程。
./sbin/start-dfs.sh #start-dfs.sh是個完整的可執行文件,中間沒有空格若出現如下SSH提示,輸入yes即可。
啟動時可能會出現如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN 提示可以忽略,并不會影響正常使用。
啟動 Hadoop 時提示 Could not resolve hostname
如果啟動 Hadoop 時遇到輸出非常多“ssh: Could not resolve hostname xxx”的異常情況,如下圖所示:
這個并不是 ssh 的問題,可通過設置 Hadoop 環境變量來解決。首先按鍵盤的 ctrl + c 中斷啟動,然后在 ~/.bashrc 中,增加如下兩行內容(設置過程與 JAVA_HOME 變量一樣,其中 HADOOP_HOME 為 Hadoop 的安裝目錄):
export HADOOP_HOME=/usr/local/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native保存后,務必執行 source ~/.bashrc 使變量設置生效,然后再次執行 ./sbin/start-dfs.sh 啟動 Hadoop。
啟動完成后,可以通過命令 jps 來判斷是否成功啟動,若成功啟動則會列出如下進程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 沒有啟動,請運行 sbin/stop-dfs.sh 關閉進程,然后再次嘗試啟動嘗試)。如果沒有 NameNode 或 DataNode ,那就是配置不成功,請仔細檢查之前步驟,或通過查看啟動日志排查原因。
Hadoop無法正常啟動的解決方法
一般可以查看啟動日志來排查原因,注意幾點:
啟動時會提示形如 “DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 對應你的機器名,但其實啟動日志信息是記錄在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以應該查看這個后綴為 .log 的文件;
每一次的啟動日志都是追加在日志文件之后,所以得拉到最后面看,對比下記錄的時間就知道了。
一般出錯的提示在最后面,通常是寫著 Fatal、Error、Warning 或者 Java Exception 的地方。
可以在網上搜索一下出錯信息,看能否找到一些相關的解決方法。
此外,若是 DataNode 沒有啟動,可嘗試如下的方法(注意這會刪除 HDFS 中原有的所有數據,如果原有的數據很重要請不要這樣做):
針對 DataNode 沒法啟動的解決方法
./sbin/stop-dfs.sh # 關閉 rm -r ./tmp # 刪除 tmp 文件,注意這會刪除 HDFS 中原有的所有數據 ./bin/hdfs namenode -format # 重新格式化 NameNode ./sbin/start-dfs.sh # 重啟成功啟動后,可以訪問 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。
Hadoop的Web界面
總結
以上是生活随笔為你收集整理的大数据学习(2-1)-Hadoop安装教程-单机模式和伪分布模式(Ubuntu14.04LTS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前后分离接口规范
- 下一篇: ubuntu18.04.1的下载链接