hadoop配置檔案詳解、安裝及相關操作補充版

y_keven發表於2014-01-25

一、      Hadoop偽分佈配置

          首先應該現在profile檔案新增hadoop_home操作如下:

export JAVA_HOME=/usr/java/jdk
export HADOOP_HOME=/usr/java/hadoop
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

           1. 在conf/hadoop-env.sh檔案中增加:export JAVA_HOME=/home/Java/jdk1.6

           2.  在conf/core-site.xml檔案中增加如下內容:

 <!--  fs.default.name - 這是一個描述叢集中NameNode結點的URI(包括協議、主機名稱、埠號),叢集裡面的每一臺機器都需要知道NameNode的地址。DataNode結點會先在NameNode上註冊,這樣它們的資料才可以被使用。獨立的客戶端程式通過這個URI跟DataNode互動,以取得檔案的塊列表。-->

 <property>

              <name>fs.default.name</name>

              <value>hdfs://localhost:9000</value>

        </property>


       <!—hadoop.tmp.dir 是hadoop檔案系統依賴的基礎配置,很多路徑都依賴它。如果hdfs-site.xml中不配                     置namenode和datanode的存放位置,預設就放在這個路徑中-->

  <property>

      <name>hadoop.tmp.dir</name>

       <value>/home/hdfs/tmp</value>

   </property>

 3.  在conf/hdfs-site.xml中增加如下內容:

       <!-- dfs.replication -它決定著 系統裡面的檔案塊的資料備份個數。對於一個實際的應用,它 應該被設為3(這個           數字並沒有上限,但更多的備份可能並沒有作用,而且會佔用更多的空間)。少於三個的備份,可能會影響到資料的         可靠性(系統故障時,也許會造成資料丟失)-->

     <property>

         <name>dfs.replication</name>

         <value>1</value>

     </property>

 

          <!--  dfs.data.dir 這是DataNode結點被指定要儲存資料的本地檔案系統路徑。DataNode結點上            的這個路徑沒有必要完全相同,因為每臺機器的環境很可能是不一樣的。但如果每臺機器上的這            個路徑都是統一配置的話,會使工作變得簡單一些。預設的情況下,它的值hadoop.tmp.dir, 這             個路徑只能用於測試的目的,因為,它很可能會丟失掉一些資料。所以,這個值最好還是被覆                 蓋。 

dfs.name.dir 這是NameNode結點儲存hadoop檔案系統資訊的本地系統路徑。這個值只對NameNode有效,DataNode並不需要使用到它。上面對於/temp型別的警告,同樣也適用於這裡。在實際應用中,它最好被覆蓋掉。-->

           <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外掛提交作業時,會預設以 DrWho 身份去將作業寫入hdfs檔案系統中,對應的也就是 HDFS 上的/user/hadoop ,  由於 DrWho 使用者對hadoop目錄並沒有寫入許可權,所以導致異常的發生。解決方法為:放開 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.  格式化工作空間

進入bin目錄,執行 ./hadoop namenode –format

           2.  啟動hdfs

進入hadoop目錄,在bin/下面有很多啟動指令碼,可以根據自己的需要來啟動。

                    * start-all.sh 啟動所有的Hadoop守護。包括namenode, datanode, jobtracker, tasktrack

* stop-all.sh 停止所有的Hadoop

* start-mapred.sh 啟動Map/Reduce守護。包括Jobtracker和Tasktrack

* stop-mapred.sh 停止Map/Reduce守護

* start-dfs.sh 啟動Hadoop DFS守護Namenode和Datanode

* stop-dfs.sh 停止DFS守護  

三、Hadoop hdfs 整合

     可按如下步驟刪除和更改hdfs不需要的檔案:

         1.將hadoop-core-1.0.0.jar 移動到lib目錄下。

         2. 將ibexec目錄下的檔案移動到bin目錄下。

         3. 刪除除bin、lib、conf、logs之外的所有目錄和檔案。

         4. 如果需要修改日誌儲存路徑,則需要在conf/hadoop-env.sh檔案中增加:

            export    HADOOP_LOG_DIR=/home/xxxx/xxxx即可。

四、HDFS檔案操作

Hadoop使用的是HDFS,能夠實現的功能和我們使用的磁碟系統類似。並且支援萬用字元,如*。

       1.  檢視檔案列表

檢視hdfs中/user/admin/hdfs目錄下的檔案。

a. 進入HADOOP_HOME目錄。

b. 執行sh bin/hadoop fs -ls /user/admin/hdfs

檢視hdfs中/user/admin/hdfs目錄下的所有檔案(包括子目錄下的檔案)。

a. 進入HADOOP_HOME目錄。

b. 執行sh bin/hadoop fs -lsr /user/admin/hdfs

       2.  建立檔案目錄

檢視hdfs中/user/admin/hdfs目錄下再新建一個叫做newDir的新目錄。

a. 進入HADOOP_HOME目錄。

b. 執行sh bin/hadoop fs -mkdir /user/admin/hdfs/newDir

       3.  刪除檔案

刪除hdfs中/user/admin/hdfs目錄下一個名叫needDelete的檔案

a. 進入HADOOP_HOME目錄。

b. 執行sh bin/hadoop fs -rm /user/admin/hdfs/needDelete

      刪除hdfs中/user/admin/hdfs目錄以及該目錄下的所有檔案

a. 進入HADOOP_HOME目錄。

b. 執行sh bin/hadoop fs -rmr /user/admin/hdfs

        4. 上傳檔案

上傳一個本機/home/admin/newFile的檔案到hdfs中/user/admin/hdfs目錄下

a. 進入HADOOP_HOME目錄。

b. 執行sh bin/hadoop fs –put /home/admin/newFile /user/admin/hdfs/

        5. 下載檔案

下載hdfs中/user/admin/hdfs目錄下的newFile檔案到本機/home/admin/newFile中

a. 進入HADOOP_HOME目錄。

             b. 執行sh bin/hadoop fs –get /user/admin/hdfs/newFile /home/admin/newFile

        6. 檢視檔案內容

檢視hdfs中/user/admin/hdfs目錄下的newFile檔案

a. 進入HADOOP_HOME目錄。

b. 執行sh bin/hadoop fs –cat /home/admin/newFile

相關文章