系統:Ubuntu16.04html
JDK:jdk-8u201java
Hadoop:3.1.2node
1、安裝JDK
https://www.cnblogs.com/tanrong/p/10641803.htmllinux
2、安裝並配置ssh免密登陸
hadoop須要使用SSH的方式登錄,linux下須要安裝SSH。客戶端已經安裝好了,通常只須要安裝服務端就能夠了:
在安裝以前,仍是先查看系統是否已經安裝而且啓動了ssh。git
# 查看ssh安裝包狀況 dpkg -l | grep ssh # 查看是否啓動ssh服務 ps -e | grep ssh
若是沒有ssh服務,則安裝ssh:github
$ sudo apt-get install openssh-server
安裝完成,開啓服務(通常都是自動開啓的,因此若是一切正常的話下面這條能夠不用執行)web
$ sudo /etc/init.d/ssh start
測試登錄本機 ssh localhost 輸入yes,再輸入密碼,就應該能夠登陸了。可是每次輸入比較繁瑣,若是是集羣那就是災難了,因此要配置成免密碼登錄的方式。chrome
1. 生成公鑰私鑰,將在~/.ssh文件夾下生成文件id_rsa:私鑰,id_rsa.pub:公鑰apache
$ ssh -keygen -t rsa
一直回車便可ubuntu
2. 導入公鑰到認證文件,更改權限:
(1)導入本機:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(2)導入服務器:(我只是在本機配置的,因此這一步我沒作)
首先將公鑰複製到服務器:
scp ~/.ssh/id_rsa.pub xxx@host:/home/xxx/id_rsa.pub
而後,將公鑰導入到認證文件,這一步的操做在服務器上進行:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
最後在服務器上更改權限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3)測試:ssh localhost 第一次須要輸入yes和密碼,以後就不須要了。
3、hadoop的安裝與配置
1. 官網下載:https://hadoop.apache.org/releases.html Binary download
也可使用wget命名下載(下載目錄是當前目錄):
例如:version3.1.2 http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
2. 解壓、移動到你想要放置的文件夾
mv ./hadoop-3.1.2.tar.gz ~/Software/hadoop
tar -zvxf hadoop-3.1.2.tar.gz
3. 建立hadoop用戶和組,並授予執行權限
sudo addgroup hadoop sudo usermod -a -G hadoop xxx #將當前用戶加入到hadoop組 sudo gedit /etc/sudoers #將hadoop組加入到sudoer
在 root ALL=(ALL) ALL 後
添加一行 hadoop ALL=(ALL) ALL
sudo chmod -R 755 /home/rongt/Software/hadoop sudo chown -R rongt:hadoop /home/rongt/Software/hadoop //不然ssh會拒絕訪問
這些都是通常須要的操做,這篇文章還進行了其它的配置,若是遇到問題能夠看看,是否是因爲這些配置致使的:點這裏。
4. 修改配置文件,和JDK的安裝同樣,能夠選擇修改哪一個文件。這裏修改 sudo gedit /etc/profile 或者 sudo gedit ~/.bashrc
export HADOOP_HOME=/home/rongt/Software/hadoop/hadoop-3.1.2 export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
# 使配置文件生效 source /etc/profile 或者 source ~/.bashrc
這篇配置文章還配了不少其它配置,我暫時沒有配置,遇到問題,能夠作爲參考。點這裏。
記錄一個報錯 ERROR: /usr/lib/jvm/java-8-oracle/jre/bin/bin/java is not executable.
很明顯路徑錯誤,裏面有兩個bin,當時是由於環境變量設置錯誤,可是後來改了環境變量仍是這樣報錯,考慮到是由於環境變量沒有生效,因而執行了source /etc/profile但仍是不行,最後重啓以後解決了
5. 測試是否配置成功
hadoop version
6. hadoop單機配置(非分佈式模式)
hadoop默認是非分佈式模式,不須要進行其它配置。能夠測試demo來觀察是否配置正確。下面這個例子用來統計README.txt 文件的單詞數
# 進入hadoop主目錄 cd /home/rongt/Software/hadoop/hadoop-3.1.2 mkdir input # 裏面有個README.txt cp README.txt input # 注意改爲本身的Hadoop版本 bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-3.1.2-sources.jar org.apache.hadoop.examples.WordCount input output
7. hadoop僞分佈式配置
僞分佈式只須要更改兩個文件就夠了,core-site.xml和hdfs-site.xml。這兩個文件都在hadoop目錄下的etc/hadoop中。
cd /home/rongt/Software/hadoop/hadoop-3.1.2/etc/hadoop
首先是core-site.xml,設置臨時目錄位置,不然默認會在/tmp/hadoo-hadoop中,這個文件夾在重啓時可能被系統清除掉,因此須要改變配置路徑。修改<configuration> </configuration>
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/home/rongt/Software/hadoop/hadoop-3.1.2/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,僞分佈式只有一個節點,因此必須配置成1。還配置了datanode和namenode的節點位置。
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/rongt/Software/hadoop/hadoop-3.1.2/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/rongt/Software/hadoop/hadoop-3.1.2/tmp/dfs/data</value> </property> </configuration>
配置完成後在 /home/rongt/Software/hadoop/hadoop-3.1.2 (注意是本身的hadoop目錄) 下使用如下命令 執行format命令,格式化名稱節點
./bin/hdfs namenode -format
開啓hdfs:./sbin/start-dfs.sh (一樣注意路徑)若是出現ssh認證 輸入yes就能夠了。
遇到報錯:localhost: ERROR: JAVA_HOME is not set and could not be found.
解決方案:實際上是hadoop裏面hadoop-env.sh文件裏面的java路徑設置不對,hadoop-env.sh在/home/rongt/Software/hadoop/hadoop-3.1.2/etc/hadoop目錄下,具體的修改辦法以下:
# sudo gedit hdoop-env.sh 將語句 export JAVA_HOME=$JAVA_HOME # 也有可能語句爲export JAVA_HOME= (且被註釋掉了) 修改成 export JAVA_HOME=/usr/lib/jvm/java-8-oracle # 本身的Java home路徑,能夠在終端輸入$JAVA_HOME 查看 保存後退出,從新執行./sbin/start-dfs.sh
輸入jps命令查看是否啓動成功
namenode和datanode都要出現纔算成功??
訪問http://localhost:50070 查看節點信息。 具體要看配置文件,我目前的地址是:http://rongt:50070
關閉hdfs: ./sbin/stop-dfs.sh
8. 配置yarn(非必須)
上面都是hdfs的配置,接下來就須要配置mapreduce的相關配置了,不配這個也不會影響到什麼。可是缺乏了資源調度,hadoop2.x版本使用yarn來進行任務調度管理,這是與1.x版本最大的不一樣。
在/home/rongt/Software/hadoop/hadoop-3.1.2下操做
# 並無mapred-site.xml.template這個文件,不過直接有mapred-site.xml,因此沒有執行這一步 # 我看的教程是安裝2.x的,但我下的是3.1.2,這多是版本區別吧 cp ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml sudo gedit ./etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
修改etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
啓動yarn(要先啓動了hdfs:./sbin/start-dfs.sh)
./sbin/start-yarn.sh
開啓歷史服務器,查看歷史任務,這樣能夠在web界面中查看任務運行狀況:
./sbin/mr-jobhistory-daemon.sh start historyserver
啓動成功後能夠在http://localhost:8088/cluster訪問集羣資源管理器。
不啓用 YARN 時,是 「mapred.LocalJobRunner」 在跑任務,啓用 YARN 以後,是 「mapred.YARNRunner」 在跑任務。啓動 YARN 有個好處是能夠經過 Web 界面查看任務的運行狀況:http://localhost:8088/cluster 。
關閉資源管理器
./sbin/stop-yarn.sh ./sbin/mr-jobhistory-daemon.sh stop historyserver # 關了以後 http://localhost:8088/cluster就沒法訪問了
9. 分佈式部署,沒有兩臺電腦,沒有嘗試,具體見:這裏。
4、hdfs文件操做
參考連接:(在chrome書籤 Hadoop - HDFS中都有)
Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp":student:supergroup:drwx------權限問題
Permission denied: user=administrator, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
# 在linux命令前加 hdfs dfs - hdfs dfs -help # 查看 新版本要加一個 / hadoop fs -ls / # 刪除 hadoop fs -rm -r /wordCount2 # 新建 hdfs dfs -mkdir /Test # 賦權 hadoop fs -chmod 777 /wordCount2
參考:
Ubuntu16.04+hadoop2.7.3環境搭建 !!