從CentOS到Hadoop(Linux CentOS 7 安裝配置Hadoop僞分佈過程詳解)

目錄

零、前言

一、虛擬機安裝及CentOS系統配置

二、CentOS系統及網絡配置

三、SSH無密碼登錄

四、Java安裝及環境配置

五、Hadoop0.20.0僞分佈環境安裝

六、運行示例

七、參考與感謝



零、前言

(一)、前言

最近在做wikipedia的東西,需要大規模處理數據,因此就需要使用hadoop工具操作。一開始想安裝的linux版本是ubuntu 14和hadoop 2.x版本,但是安裝完成後發現操作wiki的jar包要比較老版本的hadoop,最終選擇了使用較多的CentOS 7版本的linux系統和hadoop 0.20.0版本。java環境配置的jdk1.7,自從jdk更新爲jdk和jar合併以後,很多地方都不太適應,1.8版本又怕不契合最終選擇jdk 1.7安裝。

由於每個linux系統操作不太一樣,所以要看安裝要版本對應。不同hadoop版本的前部分安裝大同小異,一直到第五部分的(一)步驟都是一樣的,可以進行些參考。有一些步驟是我認爲方便後續操作的,覺得麻煩可以忽略,因爲這段時間配置過了很多遍,會寫的比較詳細,儘量做到傻瓜操作。強調一下:本文配置的是僞分佈模式僞分佈僞分佈!。不說廢話了,進入正題。

(二)、所需軟件安裝包、壓縮包及下載地址

1. VMware Workstation 14(虛擬機軟件):鏈接:https://pan.baidu.com/s/1auDLNGooMD4khVcyLfwBBQ  提取碼:4trs 

2. JDK 1.7 linux x64版:鏈接:https://pan.baidu.com/s/1r0fT27FrEmECjePIOvOiJg  提取碼:qg32 

3. Hadoop 0.20.0 版本 :鏈接:https://pan.baidu.com/s/1-wkxdhXaOAFTkncp2dlWig  提取碼:8lcs 

4. Linux系統安裝鏡像CentOS 7(清華):http://mirrors.tuna.tsinghua.edu.cn/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso(同時吐槽一下百度雲吃相越來越難看,不是會員大於4g的文件不能上傳!)

一、虛擬機安裝及CentOS系統配置

(一)、VMware虛擬機軟件安裝(其實這裏沒什麼好說的就是普通的軟件安裝)

1.下載完成之後解壓

2.打開解壓後的文件中就是安裝包

3.打開上圖顯示的exe文件進行安裝,注意路徑這裏儘量不要裝在C盤就OK。

(二)、CentOS系統安裝

1. 打開VMware,點擊“創建新的虛擬機按鈕”:

2. 選擇需要安裝的系統鏡像文件(以下開始沒有提及的位置都可以直接按“確定”或“下一步”)

3. 確定安裝名稱及虛擬機安裝位置(虛擬機名稱會在安裝後顯示在左側信息欄。安裝位置選擇儘量不要在C盤,且目標盤空間需要足夠大。)(沒有提到的操作可以直接按“確定”或“下一步”)

4. 磁盤大小確定(由於在hadoop中運行的一般都是超大型文件,因此儘量在第一次安裝虛擬機時就將磁盤設置足夠大,這裏我設置80G,且設置爲單個文件。是因爲可能後續操作中一個文件就有幾十G,如果分區可能無法裝入。注意:一旦後續空間不足,追加磁盤操作比較複雜且很容易出錯誤)(沒有提到的操作可以直接按“確定”或“下一步”)

5.點擊“完成”,就相當於你有了一臺電腦。然後開始安裝電腦的系統——CentOS。

6.上一步點擊“完成”後,虛擬機開啓,安裝系統。點擊虛擬機界面進入操作,“↑”和“↓”用於選擇,這裏選擇“Install CentOS 7”。

7. 選擇語言,選擇自己喜歡的。。。我就選漢語了。這一步就不放圖片了。

8. 語言選擇後,自動進入“安裝信息摘要”界面,需要選擇安裝模式,默認安裝只有命令行模式,沒有圖形化界面。這裏點擊“安裝選擇”按鈕,點開後先在左側欄選擇“GNOME桌面”,右側所有條目打勾。(其他標有感嘆號的打開點擊確定就可以了)

9. 點擊開始安裝後,開始安裝系統。此時可以設置linux系統的root用戶密碼(root用戶即系統的超級管理員),點擊感嘆號那個圖標開始設置。

打開密碼設置頁面如下,注意這個密碼需要牢記(記爲密碼A)。root賬戶密碼設置完畢後。點擊完成等待系統安裝完畢即可。返回安裝界面另一個感嘆號會自動消失。不用再設置。

10. 系統安裝完成後配置

系統安裝完後會需要點擊重啓,重啓後進入系統還有一些小配置,如確定協議、時區選擇等等。這裏比較重要的是會需要設置用戶名和密碼,這裏的用戶名是之後開機時的用戶名,這裏密碼也就是開機需要輸入的密碼(記爲密碼B)。之後就開始開始應用該系統了。

這裏簡單記一下啊,開機用密碼B,在命令行中使用root權限用密碼A。之後建立hadoop用戶並設置密碼後全用密碼C。

二、CentOS系統及網絡配置

(一)、上網設置及靜態IP配置

本身安裝hadoop環境就需要靜態IP的配置,而安裝完成這個版本的CentOS7後發現不能上網,所以這兩個問題一起解決。

1. 首先,在桌面右鍵打開命令窗口(打開終端),cd到網絡配置目錄下,找到網絡配置文件

$ cd /etc/sysconfig/network-scripts
$ ls

運行結果如下:

2. 設置虛擬機網絡連接方式

在虛擬機軟件界面左上角,選擇“編輯”(圖中①位置)→“虛擬網絡編輯器”。打開後將右下角的更改設置(圖中②)的權限打開,鼠標左鍵再確定就好。

設置VMnet8網絡,①.選擇NAT模式,②.不再勾選“使用DHCP服務將IP地址分配給虛擬機”這個選項,③.打開NAT設置選項。

在NAT設置中主要記住網關就可以了,如下圖“192.168.201.2”。

3. 回到系統命令終端中,打開編輯名爲ifcfg-ens33的文件。可能需要root權限,輸入如下命令後,再輸入密碼進行文件編輯

$ sudo vim ifcfg-ens33

按“i”鍵對文件進行插入操作,將其中改爲如下內容:

填寫完成後,退出編輯器的命令是:先按一下“esc”鍵,退出編輯狀態,再按住“shift”鍵按“z”鍵兩下,退回命令終端

4. 重啓網絡服務,輸入密碼後測試,ping一下百度。(由於linux中ping不會停止,按住Ctrl+z進行停止)。出現如下說明網絡連接沒有問題了。

$ sudo service network restart
$ ping www.baidu.com

5. 更改hosts

在③我們已經將虛擬機的ip改爲靜態ip,因此爲了後續方便,將ip與localhost聯繫起來。編輯hosts的方式與之前編輯ifcfg-ens33文件的方式類似:

$ sudo vim /etc/hosts

在打開的hosts中添加一行,192.168.201.190  localhost,結果如下:

(二)、hadoop用戶組創建

1. 獲得root權限;創建hadoop用戶;設置用戶密碼;分配用戶組。注意一下,這個密碼我們記成密碼C,密碼C是hadoop用戶的登錄密碼,也是在hadoop用戶使用sudo命令時的密碼(之後全用密碼C)。

$ su
$ useradd -m hadoop -s /bin/bash
$ passwd hadoop
$ usermod -a -G hadoop hadoop

2. 更改權限(由於前面已經獲取root權限,這裏的sudo可以省略)

$ sudo vim /etc/sudoers

找到root ALL=(ALL) ALL,按“i”進入插入狀態,在其下添加hadoop ALL=(ALL)  ALL,退出時操作爲:先按“esc”退出插入狀態,然後打一個冒號“:”,之後輸入“wq!”三個字符,按回車即可修改成功。

3. 切換用戶並重啓系統更換用戶(第二句爲重啓命令)

重啓後使用hadoop用戶登錄!

$ su hadoop
$ sudo reboot   

(三)、快捷鍵及屏幕鎖定設置(可以跳過)

重啓後,使用hadoop用戶登錄。此時爲了以後方便,可以進行一些簡單的設置。如果不需要這步是完全可以跳過的。

1. 設置終端快捷鍵

之前Ubuntu是有默認的打開終端快捷鍵的,即“Ctrl+alt+t”。而CentOS系統是沒有的,我們可以自己設置。

①. 首先打開系統設置

②. 選擇“設備”→“Keyboard”→右側信息欄拉到最底部

③. 點擊右側“+”按鈕,按如下進行輸入,其中名稱可以隨意輸入,命令欄是固定的,快捷鍵點擊“Set Shortcut...”按鈕後,按照自己的喜好就可以。我這裏設置的是“Ctrl+alt+t”。設置好之後點擊添加即可。

2. 關閉屏幕鎖定

這個是由於默認的鎖屏時間很短。因此直接關掉了。也是在設置中,找到“privacy”,右側的鎖屏打開,關掉自動鎖屏即可。

 

三、SSH無密碼登錄

(一)、登錄

嘗試ssh登錄(需要輸入yes 的地方輸入yes即可)

$ ssh localhost

(二)、設置無密碼登錄

若第一步需要密碼,則需要設置無密碼登錄,連續輸入如下三條命令(原理我也不是很懂,就不解釋了):

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

(三)、驗證無密碼登錄

之後再次嘗試ssh登錄

$ ssh localhost

如果不再需要密碼則表示設置無密碼登錄成功,整個過程圖如下:

四、Java安裝及環境配置

終於開始正題之一了,由於hadoop是用java寫的,所以java環境的配置是極其重要的。

(一)、卸載預裝OpenJDK

這個系統本身自帶了很多個openJdk環境,因此爲了不影響後續的hadoop安裝最好將其卸載。經過我多次的安裝,卸載預裝OpenJDK即可以在裝jdk1.7之前,也可以在裝jdk1.7之後。我比較習慣之前,所以各位怕關聯軟件被卸載的話可以裝好新的jdk1.7之後再卸載。

1. 查詢預裝情況(也可以將jdk改爲java)

$ rpm -qa|grep  jdk

結果如下:

2. 卸載

這裏卸載使用yum命令,由於需要root權限,因此命令如下:

sudo yum -y remove java java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64

交替使用上面查詢、卸載這兩個命令,只需要更改最後的文件名。將其他的openjdk卸載掉,直至全部卸載。 

(二)、JDK1.7安裝

1. 這裏的安裝過程就是解壓的過程,首先將jdk壓縮包複製至虛擬機中(這裏所用的版本都可以直接複製),我們把jdk 的壓縮包複製至文檔目錄下

2. 解壓。在文檔目錄界面右鍵,打開終端。進行如下第一條命令即可解壓。解壓之後出現一個文件夾。第二條命令是,對出現的文件夾賦予操作權限(爲了保證後續操作)。

$ tar -zxvf jdk7u79linuxx64.tar.gz
$ sudo chmod -R 777 jdk1.7.0_79

 

3. 移動。將解壓得的jdk文件夾移動至/usr/local/目錄下的java文件夾。執行完該步驟之後我們可以依次打開磁盤根目錄下usr文件夾、local文件夾,即可找到java文件夾。

$ sudo mv jdk1.7.0_79 /usr/local/java

(三)、java環境變量設置

對於Java環境變量的安裝,基本同Windows下類似。只是操作方法同上面改變配置文件的操作相同。

1. 打開環境變量配置文件

$ sudo vim /etc/profile

2. 在文本末尾添加如下字符(注:jdk12開始jdk和jar合併了,不再像下面這樣配置環境變量。):

#JAVA
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jar/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jar/bin

 

3.退出後,輸入如下命令使環境變量更改生效:

$ source /etc/profile

4. 驗證java安裝完成:輸入如下命令,若出現jdk版本爲1.7.0則表示java安裝配置完成:

$ java -version

 

五、Hadoop0.20.0僞分佈環境安裝

(一)、Hadoop安裝

hadoop安裝與java安裝基本流程是一樣的

1. 將文件複製至文檔文件夾下。(儘量在電腦上下好後複製,再在虛擬機內粘貼。或者直接在虛擬機內下載,直接拖拽容易損壞)。

2. 解壓並改變權限

$ tar -zxvf hadoop-0.20.0.tar.gz
$ sudu chmod -R 777 hadoop-0.20.0

3. 移動至local文件夾下。執行完命令後可以看到,在local文件夾下有java和hadoop兩個文件夾。

$ sudo mv hadoop-0.20.0 /usr/local/hadoop

 

(二)、hadoop環境變量設置

hadoop的環境變量也和java的環境變量設置基本類似,以後熟悉了可以這兩個一起進行。

1. 打開環境變量配置文件

$ sudo vim /etc/profile

2. 在末尾添加如下內容

#HADOOP 
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

 3. 刷新環境變量配置,使更改生效

$ source /etc/profile

(三)、僞分佈文件配置

hadoop的配置有三種,單機模式、僞分佈模式和完全分佈模式。這三種配置的主要不同就是在這一步,對不同配置文件的配置不同,我們這裏進行的是僞分佈的配置。

我們打開hadoop安裝目錄下的conf文件夾,這個文件夾內容如下,配置文件有下面圖中四個,我們依照圖中標記的順序進行配置。

1. 配置hadoop-env.sh文件

打開該文件,這個文件的配置只需要填寫java的路徑,我們在對應位置輸入JAVA_HOME=/usr/local/java,即下圖綠框即可。

2. 配置core-site.xml文件

打開改文件採用右鍵→用其他方式打開→選擇gedit。這是由於xml文件默認用的是瀏覽器打開,無法編輯。

將內容添加如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>
		<name>fs.default.name</name>  
		<value>hdfs://localhost:9000</value>
	</property>  
</configuration>

3. 配置hdfs-site.xml文件

打開方式如上,添加內容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>  
		<name>dfs.replication</name>  
		<value>1</value>  
	</property>  
	<property>  
		<name>dfs.name.dir</name>  
		<value>/usr/local/hadoop/tmp/name</value>  
	</property>  
	<property>  
		<name>dfs.data.dir</name>  
		<value>/usr/local/hadoop/tmp/data</value>  
	</property>  
</configuration>

4. 配置mapred-site.xml文件(注在hadoop2.x.y中,該步完全不相同,請參考他處)

打開方式如上,添加內容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
	<property>  
  		<name>mapred.job.tracker</name>  
  		<value>localhost:9001</value>  
	</property>  
</configuration>

5. 系統初始化及安裝成功檢測

①. 此時系統已經安裝完畢,我們在hadoop安裝文件打開命令終端,首先進行hdfs系統數據格式化

$ ./bin/hadoop namenode -format

出現如下紅框中的successfully formatted表示初始化成功

 

 ②. 接下來我們啓動hadoop環境

$ ./bin/start-all.sh

證明啓動成功的方式是,運行jps命令查看正在運行的進程。若出現jps未找倒命令的情況下,可以刷新一遍環境變量。

出現最下面紅框所示的六個進程表示配置完成。集齊六顆龍珠可以召喚神龍了~~~~。

 

③. 此時另一個檢測方法是打開瀏覽器查看hadoop服務的運行情況

(1).瀏覽器打開localhost:50070

④. 發現缺少進程的解決方式

在日常使用中,格式化不需要每次都進行,若啓動後發現缺少進程可以進行如下操作:

(1).$ ./bin/stop-all.sh #這步是停止hadoop服務

(2). 將hadoop目錄下tmp文件夾 刪除

(3). $ ./bin/hadoop namenode -format  #執行格式化文件命令

(4). $ ./bin/start-all.sh #再次啓動服務。

日常中需要正常開啓和關閉就可以了。但這個辦法也不是萬能的,如果有其他情況就問一下度娘吧。~

六、運行示例

簡單的運行一下word count這個實例,本質上就是計數一下輸入文件中的各種單詞數量。在hadoop中這個程序就像是C語言中的“hello world”,java中的“hello Java”一樣,作爲新手測試使用。(當然,,,我也還是菜鳥一枚)。

在這個示例的演示中,除了簡歷文件時會進入下級文件夾,其餘均在hadoop安裝目錄執行命令終端操作。

(一)、啓動

$ ./bin/start-all.sh
$ jps

 

(二)、建立及上傳文件

1. 建立測試文件夾及文件,並向其中添加內容。

$ mkdir test                                    #建立test文件夾
$ cd test                                       #進入test文件夾                            
$ echo "hello world" >> testfile1.txt           #添加數據到testfile1.txt
$ echo "hello china" >> testfile1.txt
$ echo "hello world" >> testfile2.txt           #添加數據到testfile2.txt
$ echo "hello hadoop" >> testfile2.txt
$ echo "hello mapreduce" >> testfile2.txt
$ cd ..                                         #返回上級目錄,即hadoop目錄

下面爲testfile1.txt 和testfile2.txt的內容:

2. 上傳至hdfs系統

$ ./bin/hadoop fs -mkdir -p -user/hadoop    #建立用戶目錄
$ ./bin/hadoop fs -mkdir input              #建立輸入目錄
$ ./bin/hadoop fs -put ./test/*.txt input   #將文件傳至輸入目錄

(三)、運行

$ ./bin/hadoop jar ./hadoop-0.20.0-examples.jar wordcount input output

input爲之前在hdfs中建立的文件夾,output會在運行中自動建立。之後開始運行

 

(四)、輸出結果

./bin/hadoop fs -ls
./bin/hadoop fs -ls output
./bin/hadoop fs -cat output/part-r-00000

依次輸入上面命令,第一個命令是查看output文件夾是否建立,第二個是查看output文件夾下生成的文件,可以看到part-r-00000即爲最後的結果保存文件,第三個命令用於查看生成結果。由下圖可以看到,結果計數是沒問題的。 

 

執行下面命令可以將結果保存至本地,本地會生成output目錄保存結果文件。

$ ./bin/hadoop fs -get output ./output

最終結果如下圖: 

 

(五)、停止運行

$ ./bin/stop-all.sh

輸入上面命令,結束hadoop服務。 

七、參考與感謝

在安裝過程中看了很多教程,也遇到了很多突發問題,感謝下面的博主的寶貴經驗。十分感謝。在看這篇帖子的夥伴們如果遇到不明白的問題也可以直接留言,也可以看一下我下面提供的參考,很多經驗從中得來。後面其實還遇到了很多問題再慢慢更新吧。

解決上網問題。https://blog.csdn.net/zhuzj12345/article/details/80747862

設置快捷鍵。https://blog.csdn.net/wu_wxc/article/details/48464543

jdk安裝:https://www.jianshu.com/p/1d96058e6b20

中文輸入法。https://jingyan.baidu.com/article/86f4a73eaa0a6337d6526985.html

修改文件權限:https://www.cnblogs.com/seven4027/p/3512780.html

移動文件:http://www.3qphp.com/linux/command/87.html

用戶對安裝目錄的權限:https://blog.csdn.net/chen30924190/article/details/82762351

ubuntu安裝加例子:https://www.cnblogs.com/acSzz/p/5622627.html

安裝教程1:https://www.jianshu.com/p/f82e90d4bd9a

安裝教程2:https://www.jianshu.com/p/e925137b2aa2

安裝教程3:https://blog.csdn.net/zolalad/article/details/11472207

安裝ant:https://blog.csdn.net/m0_37039484/article/details/80798139

例子:https://blog.csdn.net/u010414589/article/details/51254218

有疑問歡迎討論!不過我也是菜鳥,就是多裝了幾遍環境。感謝閱讀!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章