Centos Linux上安裝hadoop爲僞布式詳細過程(小白必讀)
一 準備工具(下載地址已附上)
本次安裝所需要的工具:
1.Linux版本:VMware-Workstation Centos6
(以下藍色字體爲超鏈接,直接點擊即可跳轉)
2.hadoop版本:2.7.1
hadoop版本:hadoop-2.7.1 64位,Linux版本,文件大小200M左右
3.jdk版本:1.8.0_11
Java版本:jdk1.8.0_11,64位,Linux版本,文件大小150M左右
二 上傳文件到Linux
關於這步中最核心的如何連接文件傳輸協議–Xshll6?
我已發佈了有關博客文章,附上鍊接:
如何傳文件到虛擬機上
三 配置前的準備工作
(建議大家可以自行去百度查找,安裝vm-tools 工具,這樣可以方便複製window上的文本複製粘貼到Linux上)
1.首先進入到root超級用戶,方便操作
su root
2.關閉防火牆以及永遠關閉
不知道本機的防火牆是否關閉的可以用命令 service iptables status 查看ip狀態,如若沒關閉,則使用命令
service iptables stop
chkconfig iptables off
第一個是暫時關閉防火牆,重啓失效,第二個永久關閉防火牆,兩者配合使用永久關閉
3.配置hadoop主機的用戶配置,以及免密設置
修改方便記憶跟操作的主機名,我們需要設置主機名
執行:
vim /etc/sysconfig/network
找到HOSTNAME改等號後面就可以改你想改的主機名稱了
但是這種方式更改主機名需要重啓才能永久生效,因爲主機名屬於內核參數
我們可以直接:
hostname bigdata
這樣,我們先配置 /etc/sysconfig/network文件,然後在命令行輸入命令,就可以達到不重啓或重啓都是主機名都是同一個的目的
查看主機名映射的ip地址
ifconfig
記住這裏的ip地址:192.168.65.25,這個是主機名的ip映射地址,待會配置文件要用到 ( 具體的ip看你顯示什麼,如果沒有顯示可以參考最上面第二步上傳文件到Linux鏈接)
默認的主機名是localhost,爲了防止混淆,把192.168.65.25映射的localhost改成剛纔的設置的主機名,我們可以修改 /etc/hosts 下的主機名,直接使用:
vim /ect/hosts
進入後添加剛纔的IP地址,主機名,之間空一格,參考下面圖片設置
成:bigdata
4.設置免密登錄
因爲僞分佈式的主機節點登錄需要自己輸入當前用戶密碼登錄,所以爲了方便,我們需要設置免密
輸入命令:
ssh-keygen
然後一直按回車
他會生成節點的公鑰和私鑰,生成的文件會自動放在/root/.ssh目錄下
因爲是僞分佈式,所以我們不用複製這個密匙登錄到其他機器
直接用:
拷貝那個自動生成的公鑰跟密鑰
ssh-copy-id root@bigdata
出現上面信息就完成了bigdata這個主機的免密登錄了
5.解壓jdk跟hadoop到指定目錄(這個目錄看自己設置的)
因爲我的用戶登錄時haigui,所以我把他們都放在/home/haigui/下,方便待會設置環境變量
使用命令:
找到你上傳的jdk跟hadoop壓縮包的目錄
tar -xf ./jdk-8u11-linux-x64.tar.gz /home/haigui
tar -xf ./hadoop-2.7.1_64bit.tar.gz /home/haigui
然後我爲了方便,把這兩個名字改成了hadoop,jdk,如圖
6.配置java即jdk環境變量
把剛纔解壓的jdk配置他的環境變量
首先我們先編輯環境變量系統文件:
vim /etc/profile
(因爲我這裏的文件路徑爲/home/haigui/下,只要有關於這路徑的,大家都需要改成自己jdk跟hadoop實際的路徑,有箭頭標識的就要改)
因爲我已經安裝好了僞分佈式hadoop,因此這裏有了後面需要配置的hadoop環境變量,爲了方便大家,大家可直接複製粘貼
#java&hadoop
JAVA_HOME=/home/haigui/jdk
HADOOP_HOME=/home/haigui/hadoop
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH CLASSPATH HADOOP_HOME
export JAVA_JRE=/home/haigui/jdk/jre
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_JRE/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
配置完這個文件後,我們用:
source /etc/profile
使這個文件立即生效
7.使用命令,檢查是否配置完畢
jdk:
java -version
hadoop:
hadoop versions
出現上面的信息,表示安裝配置jdk跟hadoop成功啦!
接下來,配置hadoop核心配置文件啦.
四 配置核心文件(重點)
1.說明配置文件的一些注意事項
hadoop的核心配置文件都在 /home/haigui/hadoop/etc/hadoop/ 下,如果沒有特別說明,所以下面所有配置文件都要進這個 /home/haigui/hadoop/etc/hadoop/ .(這個目錄是自己設置hadoop目錄)
bigdata 這個主機名,是你在上面自己設置的主機名
2.配置 hadoop-env.sh(在/hadoop/etc/hadoop/下,以下幾步的文件都是)
編輯這個文件:
vim hadoop-env.sh
爲了方便查找我們要改的信息,在命令行模式,輸入 :se nu 顯示行號
然後找到25行,跟33行改成所對應的jdk目錄,跟hadoop目錄(注意這裏是hadoo目錄後面還有/ect/hadoop),具體看下圖。
保存並退出
然後執行:
source hadoop-env.sh
讓配置文件立即生效
3.編輯 core-site.xml
首先在hadoop目錄下:/home/haigui/hadoop/ ,創建一個新的“tmp”目錄
編輯這個文件:
vim core-site.xml
注意下面的箭頭標識的地方:
第一個箭頭:
bigdata是你上面設置的主機名
第二個箭頭:
寫上這個“tmp”這個目錄的路徑
如圖:
在文件最下面添加下面的(新的這個文件,應該是隻有跟的,你需要做添加2個property節點,裏面放配置文件)
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://bigdata:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/haigui/hadoop/tmp</value>
</property>
</configuration>
保存並退出
4.編輯 hdfs-site.xml
vim hdfs-site.xml
按照第二步的照着抄:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--設置hdfs的操作權限,false表示任何用戶都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
保存並退出
5.編輯 mapred-site.xml
這個文件初始時是沒有的,但是有一個模板文件,mapred-site.xml.template
所以需要拷貝一份,並重命名爲mapred-site.xml,使用命令:
(需要進入到/home/haigui/hadoop/etc/hadoop
cp ./mapred-site.xml.template ./mapred-site.xml
然後編輯打開 mapred-site.xml
vim mapred-site.xml
直接複製:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
保存並退出
6.編輯 yarn-site.xml
編輯打開:
vim yarn-site.xml
箭頭標識:
bigdata是你上面設置的主機名
直接複製:
<configuration>
<property>
<!--指定yarn的老大 resoucemanager的地址-->
<name>yarn.resourcemanager.hostname</name>:
<value>bigdata</value>
</property>
<property>
<!--NodeManager獲取數據的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
最後保存退出
7.編輯slaves文件
vim slaves
直接在最上面寫上你上面自己設置的主機名。
保存並退出
到這裏,我們就配置完了hadoop核心文件了,基本上就配置好了,接下來是啓動跟實例測試。
五 查看及啓動
1.用命令 jps 查看在線的工作節點
jps
我們可以看到沒有啓動hadoop,是沒有任何節點在線的
2.格式化namenode
在第一次安裝hadoop的時候,需要對namenode進行格式化,以後請不要隨便在去用這個命令格式化namenode
hadoop namenode -format
只要出現 successfully則表明格式化成功。
3. 啓動hadoop
因爲我們已經配置hadoop的環境變量了,所以不要在sbin 目錄下啓動,在任何目錄下直接用這個命令都能啓動hadoop
直接使用這個命令
start-dfs.sh
(這個命令是啓動hdfs的,還有一個命令對應的是啓動yarn:start-yarn.sh),假如想完全啓動hadoop,可以直接輸入:start-start.sh,啓動hdfs跟yarn)
以後出現:WARN util.NativeCodeLoader:…警告的信息的不用管它,直接忽略就行了
然後在jps查看:
出現上面這些說明hadoop僞分佈式配置好了。
4…打開瀏覽器輸入 http://bigdata:50070
查看能成功打開 namenode狀態信息
網頁並且能打開
六 實例測試
既然已經裝好了hadoop了,那麼我們來試試官方給出的wordcount實例操作一下,感受hadoop的強大吧。
1.創建一個本地文件1.txt:
目錄我選擇爲:/home/haigui/1.txt
輸入命令:
vim 1.txt
輸入下面內容:
i like hadoop
and i like study
i like java
i like jdk
i like java jdk hadoop
保存並退出
2.上傳到hdfs文件系統上
我的1.txt是在/home/haigui/下
首先先在hdfs的根目錄下創建一個input目錄,使用命令:
hdfs dfs -mkdir /input
然後上傳到hdfs上:(確保你當前的路徑在/home/haigui下)
hdfs dfs -put ./1.txt /input
然後查看是否成功上傳:
hdfs dfs -ls /input
看到這裏說明成功上傳了。
3.使用命令讓hadoop工作
在上面的啓動hadoop中,我們只啓動hdfs,沒有啓動yarn,因此我們先使用命令啓動yarn:
start-yarn.sh
然後直接使用命令:
hadoop jar ./hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output
我們看到hadoop已經跑起來了,最後的successful代表工作成功!
4.查看輸出結果
hadoop工作成功後會自己在指定路徑/output 生成兩個文件
我們看一下
hdfs dfs -ls /output
第一個文件/output/_SUCCESS:是表示工作成功的文件,沒有具體的文本,這個我們忽略
第二個文件/output/part-r-00000:纔是我們真正的輸出文件
查看一下結果:
hdfs dfs -cat /output/part-r-00000
最後得出了每個單詞出現的次數
5.介紹該實例
上面那個命令 中下面的路徑:
./hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar
其實是hadoop裏面的官方實例的路徑,如圖:
wordcount 是說使用這個命令去統計danc
/input 是hadoop工作輸入的路徑
/output是hadoop工作輸出的路徑(這個路徑不能率先存在)