總結(jié)一下這些天做的亂七八糟的工作蚁吝,雖然我大部分的時間都在摸魚,但也是做了不少功夫响疚。在被官方文檔坑+其他各型網(wǎng)站坑過之后确憨,寫點東西避免犯重復(fù)性的錯誤译荞。
搭建hadoop所需的環(huán)境
1. linux操作系統(tǒng)
推薦使用centos,我使用的是centos7操作系統(tǒng)休弃。centos6有個問題就是安裝相關(guān)的ide環(huán)境落后吞歼,后邊需要編程的時候要自己手動升級GTK+,比較麻煩塔猾。
2. jdk1.8.0
centos7自帶的是openjdk篙骡,卸載后裝jdk1.8,執(zhí)行卸載指令如下:
$ rpm -qa | grep Java #查看Java的安裝依賴庫
$ yum -y remove Java* #卸載Java的所有依賴庫
卸載完成后去oracle官網(wǎng)下載對應(yīng)操作系統(tǒng)的jdk丈甸,使用 tar 指令解壓文件后綴為.tar.gz糯俗,或者rpm安裝文件后綴為.rpm的文件。
編輯環(huán)境變量睦擂,具體操作命令如下:
$ vim /etc/profile
上條指令需要root權(quán)限得湘,使用sudo命令或者修改etc/profile的讀寫權(quán)限。在文件中添加具體內(nèi)容:
export JAVA_HOME= # jdk的安裝路徑
export PATH=$JAVA_HOME/bin:$PATH
保存退出后使用指令:source /etc/profile
讓環(huán)境生效顿仇。
安裝 hadoop
在鏡像網(wǎng)站中選擇stable版本淘正,不要選最新的摆马,因為最新發(fā)布的基本都有點坑……由于是單節(jié)點,可以基本按照官網(wǎng)給的單節(jié)點安裝步驟進行鸿吆。網(wǎng)址:Apache Hadoop 2.9.1 – Hadoop: Setting up a Single Node Cluster.
單節(jié)點模式 Single Node 是可以直接使用bin/hadoop的囤采,出于學(xué)習(xí)的目的,可以搭建一個偽分布模式惩淳。
在hadoop安裝目錄下使用指令進行配置蕉毯。
$ vim etc/hadoop/core-site.xml
在配置文件 core-site.xml 中添加如下內(nèi)容:
<configuration>
????<property>
????????<name>fs.defaultFS</name>
????????<value>hdfs://localhost:9000</value>
????</property>
????<property>
????????<name>hadoop.tmp.dir</name>
????????<value>/home/hadoop/soft/tmp</value>
????</property>
</configuration>
其中,加粗字體中的 hadoop.tmp.dir
在官方文檔中是沒有提及到的黎泣。這個是hadoop的臨時目錄恕刘,namenode在里面存放著hdfs的數(shù)據(jù)缤谎,一旦重啟操作系統(tǒng)抒倚,就會自動把這個臨時目錄的數(shù)據(jù)清空,導(dǎo)致每次重啟虛擬機的時候坷澡,hdfs的數(shù)據(jù)都沒了……(我本人就被坑了一次托呕,namenode在操作系統(tǒng)重啟的時候一直啟動不成功……),所以這個配置很重要频敛,<value></value>
中寫要存放的路徑项郊。
另外我們還需要配置 hdfs-site.xml 這個文件,使用 vim 指令編輯斟赚,添加如下內(nèi)容:
<configuration>
?? ??<property>
????????<name>dfs.replication</name>
????????<value>1</value>
????</property>
</configuration>
將ssh設(shè)置為免密登錄着降,這樣在多個服務(wù)器中互相用ssh登錄可以省卻一些不必要的麻煩。
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
使用ssh localhost
指令看登錄是否還需要輸入passphrase拗军。
完成上述工作之后任洞,按以下步驟啟動hadoop。
- 格式化 File System
$ bin/hdfs namenode -format
- 啟動 namenode 和 datanode
$ sbin/start-dfs.sh
hadoop日志輸出在 $HADOOP_LOG_DIR
文件夾內(nèi)发侵,默認 $HADOOP_HOME/logs
交掏。
執(zhí)行后,查看 http://localhost:50070/ 是否啟動成功刃鳄。
- 停止 namenode 和 datanode
$ sbin/stop-dfs.sh
使用 HDFS
HDFS(Hadoop Distributed File System盅弛,分布式文件系統(tǒng)),可以通過命令 bin/hdfs dfs
查看幫助叔锐。
- 創(chuàng)建 HDFS 文件夾挪鹏。
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
- 將要輸入的文件上傳到HDFS,input 可以替換為任意的文件路徑愉烙。
$ bin/hdfs dfs -put etc/hadoop input
- 運行 hadoop 自帶的例子讨盒,output要寫hdfs創(chuàng)建的輸出文件夾路徑,而不是單純的output(當(dāng)時我真的就很傻直接寫output……)齿梁,比如 /test/output催植,輸出的文件夾必須是空文件夾肮蛹,否則會報錯。
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep input output 'dfs[a-z.]+'
- 驗證是否有輸出文件创南。
$ bin/hdfs dfs -cat /test/output/*
使用 YARN
YARN 是 hadoop 的資源管理系統(tǒng)伦忠,按我的理解來說,是調(diào)配資源稿辙,從各個節(jié)點中安排任務(wù)昆码。詳細的可以看官方文檔:Apache Hadoop 2.9.1 - Apache Hadoop YARN
啟動yarn之前先啟動 namenode 和 datanode 再啟動 YARN。
$ sbin/start-dfs.sh
- 配置 mapred-site.xml邻储,使用
$ vi etc/hadoop/mapred-site.xml
編寫 mapred-site.xml 文件赋咽。
<configuration>
?? ??<property>
?? ???? ??<name>mapreduce.framework.name</name>
?? ???? ??<value>yarn</value>
?? ??</property>
</configuration>
- 配置 yarn-site.xml, 使用
$ vi etc/hadoop/yarn-site.xml
指令編寫yarn-site.xml吨娜。
<configuration>
?? ??<property>
?? ???? ??<name>yarn.nodemanager.aux-services</name>
?? ???? ??<value>apreduce_shuffle</value>
?? ??</property>
</configuration>
- 啟動
$ sbin/start-yarn.sh
啟動成功后脓匿,通過瀏覽器查看 http://localhost:8088/ ,若有界面顯示則表明 resource manager 啟動成功了宦赠。另外陪毡,還可以通過jps
指令查看進程。
- 停止 YARN
$ sbin/stop-yarn.sh