1. 在conf/hadoop-env.sh文件中增加:export JAVA_HOME=/home/Java/jdk1.6
2. 在conf/core-site.xml文件中增加如下內容:
<!-- fs.default.name - 這是一個(gè)描述集群中NameNode結點(diǎn)的URI(包括協(xié)議、主機名稱(chēng)、端口號),集群里面的每一臺機器都需要知道NameNode的地址。DataNode結點(diǎn)會(huì )先在NameNode上注冊,這樣它們的數據才可以被使用。獨立的客戶(hù)端程序通過(guò)這個(gè)URI跟DataNode交互,以取得文件的塊列表。-->
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<!—hadoop.tmp.dir 是hadoop文件系統依賴(lài)的基礎配置,很多路徑都依賴(lài)它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默認就放在這個(gè)路徑中-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hdfs/tmp</value>
</property>
3. 在conf/hdfs-site.xml中增加如下內容:
<!-- dfs.replication -它決定著(zhù) 系統里面的文件塊的數據備份個(gè)數。對于一個(gè)實(shí)際的應用,它 應該被設為3(這個(gè) 數字并沒(méi)有上限,但更多的備份可能并沒(méi)有作用,而且會(huì )占用更多的空間)。少于三個(gè)的備份,可能會(huì )影響到數據的 可靠性(系統故障時(shí),也許會(huì )造成數據丟失)-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- dfs.data.dir - 這是DataNode結點(diǎn)被指定要存儲數據的本地文件系統路徑。DataNode結點(diǎn)上 的這個(gè)路徑?jīng)]有必要完全相同,因為每臺機器的環(huán)境很可能是不一樣的。但如果每臺機器上的這 個(gè)路徑都是統一配置的話(huà),會(huì )使工作變得簡(jiǎn)單一些。默認的情況下,它的值hadoop.tmp.dir, 這 個(gè)路徑只能用于測試的目的,因為,它很可能會(huì )丟失掉一些數據。所以,這個(gè)值最好還是被覆 蓋。
dfs.name.dir - 這是NameNode結點(diǎn)存儲hadoop文件系統信息的本地系統路徑。這個(gè)值只對NameNode有效,DataNode并不需要使用到它。上面對于/temp類(lèi)型的警告,同樣也適用于這里。在實(shí)際應用中,它最好被覆蓋掉。-->
<property>
<name>dfs.name.dir</name>
<value>/home/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hdfs/data</value>
</property>
<!—解決:org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。
因為Eclipse使用hadoop插件提交作業(yè)時(shí),會(huì )默認以 DrWho 身份去將作業(yè)寫(xiě)入hdfs文件系統中,對應的也就是 HDFS 上的/user/hadoop , 由于 DrWho 用戶(hù)對hadoop目錄并沒(méi)有寫(xiě)入權限,所以導致異常的發(fā)生。解決方法為:放開(kāi) hadoop 目錄的權限, 命令如下 :$ hadoop fs -chmod 777 /user/hadoop -->
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories
</description>
</property>
4. 在conf/mapred-site.xml中增加如下內容:
<!-- mapred.job.tracker -JobTracker的主機(或者IP)和端口。-->
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
二、操作命令
1. 格式化工作空間
進(jìn)入bin目錄,運行 ./hadoop namenode –format
2. 啟動(dòng)hdfs
進(jìn)入hadoop目錄,在bin/下面有很多啟動(dòng)腳本,可以根據自己的需要來(lái)啟動(dòng)。
* start-all.sh 啟動(dòng)所有的Hadoop守護。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-mapred.sh 啟動(dòng)Map/Reduce守護。包括Jobtracker和Tasktrack
* stop-mapred.sh 停止Map/Reduce守護
* start-dfs.sh 啟動(dòng)Hadoop DFS守護Namenode和Datanode
* stop-dfs.sh 停止DFS守護
三、Hadoop hdfs 整合
可按如下步驟刪除和更改hdfs不需要的文件:
1.將hadoop-core-1.0.0.jar 移動(dòng)到lib目錄下。
2. 將ibexec目錄下的文件移動(dòng)到bin目錄下。
3. 刪除除bin、lib、conf、logs之外的所有目錄和文件。
4. 如果需要修改日志存儲路徑,則需要在conf/hadoop-env.sh文件中增加:
export HADOOP_LOG_DIR=/home/xxxx/xxxx即可。
四、HDFS文件操作
Hadoop使用的是HDFS,能夠實(shí)現的功能和我們使用的磁盤(pán)系統類(lèi)似。并且支持通配符,如*。
1. 查看文件列表
查看hdfs中/user/admin/hdfs目錄下的文件。
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs -ls /user/admin/hdfs
查看hdfs中/user/admin/hdfs目錄下的所有文件(包括子目錄下的文件)。
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs -lsr /user/admin/hdfs
2. 創(chuàng )建文件目錄
查看hdfs中/user/admin/hdfs目錄下再新建一個(gè)叫做newDir的新目錄。
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs -mkdir /user/admin/hdfs/newDir
3. 刪除文件
刪除hdfs中/user/admin/hdfs目錄下一個(gè)名叫needDelete的文件
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs -rm /user/admin/hdfs/needDelete
刪除hdfs中/user/admin/hdfs目錄以及該目錄下的所有文件
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs -rmr /user/admin/hdfs
4. 上傳文件
上傳一個(gè)本機/home/admin/newFile的文件到hdfs中/user/admin/hdfs目錄下
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs –put /home/admin/newFile /user/admin/hdfs/
5. 下載文件
下載hdfs中/user/admin/hdfs目錄下的newFile文件到本機/home/admin/newFile中
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs –get /user/admin/hdfs/newFile /home/admin/newFile
6. 查看文件內容
查看hdfs中/user/admin/hdfs目錄下的newFile文件
a. 進(jìn)入HADOOP_HOME目錄。
b. 執行sh bin/hadoop fs –cat /home/admin/newFile

