Ubuntu安裝Hadoop

系統: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

 

問題:hadoop沒法訪問50070端口

 

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中都有)

HDFS文件操做

HDFS基本概念和命令行操做

hdfs中刪除文件、文件夾、抓取內容

查看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環境搭建  !!

ubuntu16.04 +Java8+ hadoop2.x單機安裝

Ubuntu16.04下Hadoop的本地安裝與配置  !!

相關文章
相關標籤/搜索