Ubuntu安裝Hadoop


系統:Ubuntu16.04

JDK:jdk-8u201

Hadoop:3.1.2

 

一、安裝JDK

https://www.cnblogs.com/tanrong/p/10641803.html

二、安裝並配置ssh免密登錄

hadoop需要使用SSH的方式登陸,linux下需要安裝SSH。客戶端已經安裝好了,一般只需要安裝服務端就可以了:
在安裝之前,還是先查看系統是否已經安裝並且啟動了ssh。

# 查看ssh安裝包情況
dpkg -l | grep ssh

# 查看是否啟動ssh服務
ps -e | grep ssh

如果沒有ssh服務,則安裝ssh:

$ sudo apt-get install openssh-server

安裝完成,開啟服務(一般都是自動開啟的,所以如果一切正常的話下面這條可以不用執行)

$ sudo /etc/init.d/ssh start

 

測試登陸本機 ssh localhost  輸入yes,再輸入密碼,就應該可以登錄了。但是每次輸入比較繁瑣,如果是集群那就是災難了,所以要配置成免密碼登陸的方式。

1. 生成公鑰私鑰,將在~/.ssh文件夾下生成文件id_rsa:私鑰,id_rsa.pub:公鑰

$ ssh -keygen -t rsa

一直回車即可

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和密碼,之后就不需要了。

 

三、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. 分布式部署,沒有兩台電腦,沒有嘗試,具體見:這里

 

 

四、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的本地安裝與配置  !!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM