1. 設(shè)置免密登錄
????偽分布式搭建過(guò)程中會(huì)涉及各種管理員權(quán)限响委,一次一次輸入密碼太過(guò)麻煩壹置,我們要求各集群間免密碼連接
sudo apt-get install openssh-server #安裝openssh-server
ssh localhost #連接到主機(jī)
exit # 退出剛才的 ssh localhost
cd ~/.ssh/ # 若沒(méi)有該目錄跨蟹,請(qǐng)先執(zhí)行一次ssh localhost
ssh-keygen -t rsa # 會(huì)有提示鱼填,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授權(quán)
????此時(shí)再用 ssh localhost 命令熙尉,無(wú)需輸入密碼就可以直接登陸了联逻,如下圖所示。
2. 安裝Java環(huán)境
見(jiàn)前文
3. 安裝 Hadoop
安裝配置見(jiàn)前文
4. 偽分布式配置
????Hadoop 可以在單節(jié)點(diǎn)上以偽分布式的方式運(yùn)行检痰,Hadoop 進(jìn)程以分離的 Java 進(jìn)程來(lái)運(yùn)行包归,節(jié)點(diǎn)既作為 NameNode 也作為 DataNode,同時(shí)铅歼,讀取的是 HDFS 中的文件公壤。
????Hadoop 的配置文件位于/usr/local/hadoop/etc/hadoop/
中换可,偽分布式需要修改2個(gè)配置文件core-site.xml
和hdfs-site.xml
。Hadoop的配置文件是 xml 格式厦幅,每個(gè)配置以聲明 property 的 name 和 value 的方式來(lái)實(shí)現(xiàn)沾鳄。
I. 修改core-site.xml
????主要設(shè)置tmp的路徑和站點(diǎn),我的hadoop安裝路徑是
/usr/local/hadoop
,大家根據(jù)個(gè)人情況配置
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
II. 修改hdfs-site.xml
????reliication指定副本數(shù)确憨,默認(rèn)3個(gè)译荞,偽分布式雖然只需要配置
fs.defaultFS
和dfs.replication
就可以運(yùn)行(官方教程如此),不過(guò)若沒(méi)有配置 hadoop.tmp.dir 參數(shù)缚态,則默認(rèn)使用的臨時(shí)目錄為/tmp/hadoo-hadoop
磁椒,而這個(gè)目錄在重啟時(shí)有可能被系統(tǒng)清理掉,導(dǎo)致必須重新執(zhí)行 format 才行玫芦。所以我們進(jìn)行了設(shè)置浆熔,同時(shí)也指定dfs.namenode.name.dir
和dfs.datanode.data.dir
,否則在接下來(lái)的步驟中可能會(huì)出錯(cuò)桥帆。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
5. NameNode 的格式化:
????建議大家可以把hadoop環(huán)境變量配置在
~/.bashrc
中医增,以后執(zhí)行命令式不用每次到bin下或者使用絕對(duì)路徑
????格式化之后系統(tǒng)會(huì)讀取配置文件,在指定路徑下生成對(duì)應(yīng)文件老虫,具體變化可以前往日志文件中查看叶骨。
./bin/hdfs namenode -format
????如果運(yùn)行結(jié)果中出現(xiàn)/dfs/name has been successfully formatted等字眼或者Exiting with status 0表示成功,linux當(dāng)中0表示True祈匙,否則可能是配置有問(wèn)題忽刽,需要重新編寫并格式化(不推薦直接重新格式化,實(shí)在需要操作的話盡量先刪除之前的數(shù)據(jù))
6. 開啟 NameNode 和 DataNode 守護(hù)進(jìn)程夺欲。
可以通過(guò)start-dfs.sh直接執(zhí)行跪帝,也可以通過(guò)
sbin/hadoop-daemon.sh start name執(zhí)行
./sbin/start-dfs.sh #start-dfs.sh是個(gè)完整的可執(zhí)行文件,中間沒(méi)有空格
7. 啟動(dòng)情況查看 :jps
????如果發(fā)現(xiàn)DataNode未能啟動(dòng)些阅,可以嘗試重啟進(jìn)程或者
sbin/hadoop-daemon.sh start datanode
手動(dòng)打開,如果二者過(guò)程中皆有異常拋出伞剑,建議刪除文件重新配置
8. 瀏覽器查看信息
????成功啟動(dòng)后,可以訪問(wèn) Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息市埋,還可以在線查看 HDFS 中的文件黎泣。
9. YARN
????YARN 是從 MapReduce 中分離出來(lái)的,負(fù)責(zé)資源管理與任務(wù)調(diào)度缤谎。YARN 運(yùn)行于 MapReduce 之上抒倚,提供了高可用性、高擴(kuò)展性坷澡,
????上述通過(guò)./sbin/start-dfs.sh
啟動(dòng) Hadoop衡便,僅僅是啟動(dòng)了 MapReduce 環(huán)境,我們可以啟動(dòng) YARN ,讓 YARN 來(lái)負(fù)責(zé)資源管理與任務(wù)調(diào)度镣陕。
- (偽分布式不啟動(dòng) YARN 也可以谴餐,一般不會(huì)影響程序執(zhí)行)
I. 修改mapred-site.xml
????首先修改配置文件 mapred-site.xml,這邊需要先進(jìn)行重命名(在hadoop根目錄下)
#重命名
mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
#編輯文件配置
vi ./etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
II. 配置yarn-site.xml
#編輯文件配置
vi ./etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
III. 啟動(dòng)yarn
./sbin/start-yarn.sh # 啟動(dòng)YARN
./sbin/mr-jobhistory-daemon.sh start historyserver # 開啟歷史服務(wù)器呆抑,才能在Web中查看任務(wù)運(yùn)行情況
IV. 關(guān)閉yarn
./sbin/stop-yarn.sh
./sbin/mr-jobhistory-daemon.sh stop historyserver
10. 利用yarn查看任務(wù)運(yùn)行
????啟動(dòng) YARN 之后岂嗓,運(yùn)行實(shí)例的方法還是一樣的,僅僅是資源管理方式鹊碍、任務(wù)調(diào)度不同厌殉。觀察日志信息可以發(fā)現(xiàn),不啟用 YARN 時(shí)侈咕,是 “mapred.LocalJobRunner”
在跑任務(wù)公罕,啟用 YARN 之后,是 “mapred.YARNRunner”
在跑任務(wù)耀销。啟動(dòng) YARN 有個(gè)好處是可以通過(guò) Web 界面查看任務(wù)的運(yùn)行情況: