阿里雲服務器上裝Hadoop的心得(內附Hadoop2.9.2詳細安裝教程)


  以前裝Hadoop-3.1.2是跟着廈大林子雨的詳細教程裝的,所以遇到的問題不多,自己沒怎么思考,導致跟着官網再裝了一個Hadoop-2.9.2(為了裝Hbase2.2.0)時裝了兩天,現在把遇到過的問題記下來以免以后再犯。

  首先,安裝軟件首先看官網教程。但官網的教程是很簡單的,比如Hadoop的安裝。默認會創建hadoop用戶;給hadoop權限;所有都在hadoop用戶下操作(不然會出錯);會更新apt;會解壓;會配JAVA_HOME,會配置SSH免密登陸。但我是個小白啊,都不懂,因此查了很多資料。不過這些都是Linux基礎,我現在得記住這些。

一、准備工作

(一)創建hadoop用戶

1.1 創建可以登陸的 hadoop 用戶,並自動建立用戶的登入目錄

sudo useradd -m hadoop

  -m 是自動建立用戶的登入目錄,如果不輸以新用戶身份登入后會出錯。

  -s指定用戶登入后所使用的shell。默認值為/bin/bash。(所以可以不指定)

  其他詳見useradd命令詳解:

        https://www.cnblogs.com/irisrain/p/4324593.html

1.2 設置密碼,按提示輸入兩次密碼

sudo passwd ${你想設的密碼}

  sudo是使得普通用戶有root權限的命令,如果就是root沒必要輸。

1.3 可為 hadoop 用戶增加管理員權限,方便部署

sudo adduser hadoop sudo

(二)更新apt

后續我們使用 apt 安裝軟件(比如ssh-server),如果沒更新可能有一些軟件安裝不了。

sudo apt-get update

(三)安裝SSH,配置免密登陸

  廈大教程cf官網教程,廈大說下載ssh-server(首先要確保你的linux系統中已經安裝了ssh,對於ubuntu系統一般默認只安裝了ssh client,所以還需要我們手動安裝ssh server)

而官網說安裝ssh(why?I don‘t know,但我相信官網hhh)

所以安裝過程是:

sudo apt-get install ssh
sudo apt-get install pdsh

配置免密登陸是:

先check一下可不可以免密:

ssh localhost

如果不行,利用 ssh-keygen 生成密鑰,並將密鑰加入到授權中(參考官網)。

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #加入授權
chmod 0600 ~/.ssh/authorized_keys               #啥意思?

(四)安裝Java環境

4.1 apt傻瓜式安裝java

  按班主任的操作好像是先查看  java -version ,或者 which java ,沒有,系統提示apt-install headlessjava啥的,然后安裝openjdk-8-jdk

apt install openjdk-8-jdk

不安11好像是因為這個在hadoop3上沒有錯,比較穩定。

4.2 編輯當前登錄用戶的環境變量配置文件

vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  • JAVA_HOME指明JDK安裝路徑,此路徑下包括lib,bin,jre等文件夾。
  • 如果你不記得自己的JAVA在哪里,可以輸 whereis java ,再翻文件夾到第一個不是快捷鍵的就是你java的位置啦!

4.3 讓環境變量立即生效

  請執行如下代碼:

source ~/.bashrc

4.4檢驗

  執行上述命令后,可以檢驗一下是否設置正確:

  用查看java -version等方式檢驗一下,至此,就成功安裝了Java環境。下面就可以進入Hadoop的安裝。

二、安裝Hadoop

(一)下載Hadoop(假如是2.9.2,方法都是一樣的,只是把名字改一下)

  也可用ftp傳,但很慢,清華鏡像是個好東西!超級快!以后都用wget https://mirrors.tuna.tsinghua.edu.cn/apache 之類的。

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz

(二)解壓

  wget默認下載到登陸路徑~也就是/home/user,linux下安裝路徑一般是/usr/local,所以解壓到那里。

sudo tar -zxf ~/hadoop-2.9.2.tar.gz -C /usr/local

  林子雨的教程里面把hadoop-2.9.2改名了(mv 成hadoop),但考慮到可能裝多個hadoop我就不改名了哈。

但hadoop-2.9.2的權限得改,因為hadoop-2.9.2文件默認擁有者是root。

cd /usr/local/ #進入用戶安裝目錄
sudo chown -R hadoop ./hadoop-2.9.2 # 修改文件權限(hadoop-2.9.2默認擁有者是root,這里我們讓hadoop也成為擁有者)

 chown詳解:https://www.runoob.com/linux/linux-comm-chown.html

(三)檢查

(每一步都要檢查一下,不然就會像我一樣經常重置系統哦!)

Hadoop 解壓后即可使用。輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息:

cd /usr/local/hadoop-2.9.2
./bin/hadoop version   #  查看hadoop版本信息,成功顯示則安裝成功

 (四)修改/usr/local/hadoop-2.9.2/etc/hadoop/hadoop-env.sh

  uncomment export JAVA_HOME=${JAVA_HOME}或者修改為具體地址

三、單機配置standlone

  默認就是,無需配置!我們可以運行運行grep例子

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/* # 查看運行結果

結果出現一次,說明✔

 

 養成好習慣,刪掉output,不然下次運行出錯

rm -r ./output

 四、偽分布式

(一)修改 ./ect/hadoop/core-site.xml 

  配置hdfs端口9000(默認是8020,但和Client連接的RPC端口沖突),讓空空的configuration標簽充實起來

  可用 netstat -ntlp 查看所有使用端口

   netstat -lent | grep 9000 查看9000端口

  林子雨說可以配置tmp文件路徑(默認為/tmp/hadoo-hadoop,重啟時可能被系統清理掉),所以配吧配吧以免之后出錯。(記住各種dir要根據自己安裝的路徑改一下啊)

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <!-- value不要直接ctrl c v,要看着自己安裝目錄改一下啊 -->
        <value>file:/usr/local/hadoop-2.9.2/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

 

(二)修改 ./ect/hadoop/hdfs-site.xml 

  hdfs-site中官網只配了replication(有幾個備份),林子雨指定了 dfs.namenode.name.dir 和 dfs.datanode.data.dir

<configuration>
    <!--官網只配了replication-->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!--林子雨還配了namenode和datanode的路徑-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop-2.9.2/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop-2.9.2/tmp/dfs/data</value>
    </property>
</configuration>

 

(三)執行 NameNode 的格式化

./bin/hdfs namenode -format

結果應該是“successfully formatted” ,若JAVA_HOME報錯,改./etc/hadoop/hadoop-env.sh中JAVA_HOME為具體地址

(四)啟動

  終於可以啟動了,是不是很激動!

./sbin/start-dfs.sh  #start-dfs.sh是個完整的可執行文件,中間沒有空格

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN 提示可以忽略,並不會影響正常使用

 (五)檢查

輸入 jps 查看是否成功,成功了應該有四個

 不成功的話:

  • 1.查看.log日志,百度
  • 2.若Datanode沒啟動
# 針對 DataNode 沒法啟動的解決方法
./sbin/stop-dfs.sh   # 關閉
rm -r ./tmp     # 刪除 tmp 文件,注意這會刪除 HDFS 中原有的所有數據
./bin/hdfs namenode -format   # 重新格式化 NameNode
./sbin/start-dfs.sh  # 重啟

(六)Web界面訪問

  我之前一直無法通過localhost訪問,后來才想起我不是在本機我電腦是阿里雲的雲主機啊啊啊啊!!所以正確做法是:

6.1首先關閉防火牆

6.2 瀏覽器輸入{你阿里雲的公網ip}:50070 

(Hadoop 2.*是50070,3.1.2是9870,具體自行查看官網)

(七)偽分布式例子

  7.1創建用戶目錄

    用戶目錄格式: /user/username

./bin/hdfs dfs -mkdir -p /user/hadoop

 7.2input文件

 將本地/usr/local/hadoop-2.9.2/ect/hadoop下的xml配置文件拷貝到分布式HDFS中用戶目錄下的input文件夾中

./bin/hdfs dfs -mkdir input

./bin/hdfs dfs -put ./etc/hadoop/*.xml input 

  我在上傳本地文件到HDFS時出現警告

  WARN hdfs.DataStreamer: Caught exception java.lang.InterruptedException 但不影響上傳,所以沒管

  復制完成后,可以通過如下命令查看文件列表

./bin/hdfs dfs -ls input

  7.3運行例子

  偽分布式讀取HDFS中的input信息,輸出結果

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

 

五、基本操作

hdfs的基本操作和單機模式相似,只是需要在hadoop安裝目錄下運行這個./bin/hdfs dfs

  • -mkdir新建目錄(-p遞歸地./bin/hdfs dfs -mkdir -p /user/hadoop
  • -get下載到本地(./bin/hdfs dfs -get output ./output)
  • -cat顯示查看文件內容(./bin/hdfs dfs -cat output/*)
  • -put本地 目標地址(./bin/hdfs dfs -put ./etc/hadoop/*.xml input
  • -列出文件目錄(./bin/hdfs dfs -ls input
  • -chmod 777 文件名(修改文件權限為所有人可讀寫)
  • -rm 刪除(-r遞歸的)

六、參考資料

  http://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/SingleCluster.html

       http://dblab.xmu.edu.cn/blog/install-hadoop/

七、總結(敲重點!)

  在阿里雲Ubuntu實例上面裝軟件大概步驟就是

  (1)在清華鏡像上下載 

wget http://mirrors.tuna.tsinghua.edu.cn/*

  (2)解壓

sudo tar -zxf ~/*.tar.gz -C /usr/local

  (3)給hadoop(當前用戶)這個文件夾的權限

sudo chown -R hadoop ./hadoop-2.9.2 # 修改文件權限(hadoop-2.9.2默認擁有者是root,這里我們讓hadoop也成為擁有者)

  (4)按照官網,按單機、偽分布一步步來,修改各種配置文件

  (5)要訪問web前關一下防火牆(控制台)

下面這是我安裝hadoop的命令行:

  希望我踩過的坑大家就不要踩了,最后,我想說老師說的對啊裝軟件還是要看官網以及各種英文網站。希望以后裝軟件快一點,加油!


免責聲明!

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



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