Hadoop的配置文件設置(非HDFS HA)


Hadoop 2.7.4 + HBase 1.2.6 + ZooKeeper 3.4.10 配置

本文為上述配置的一部分,為方便閱讀,故設為獨立頁面

 

在linux中,通過下面命令hadoop

curl -O https://archive.apache.org/dist/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz

 

先將hadoop包解壓到目錄 : /home/mytestzk/hadoop-2.7.4

在hadoop目錄下創建以下子目錄:

  mkdir tmp
  mkdir hdfs
  mkdir hdfs/name
  mkdir hdfs/data

 

1:配置

hadoop 2.x的最大進步在於,引入了yarn,在這個系統中,mapreduce成為了它的一個組件,並且是可替換的組件,比如可以使用spark,所以配置的過程中,需要注意yarn的相關配置文件的使用,具體共有7配置文件:

  • hadoop-env.sh

該文件是hadoop運行基本環境的配置,需要修改的為java虛擬機的位置。

故在該文件中修改JAVA_HOME值為本機JDK安裝位置,在hadoop2.7.4 中,改為 export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151

  • yarn-env.sh

該文件是yarn框架運行環境的配置,同樣需要修改java虛擬機的位置。

在該文件中修改JAVA_HOME值為本機安裝位置,在hadoop2.7.4 中,可以看到已經有如下配置:

  • slaves

該文件里面保存所有slave節點的信息,我這里寫的是ip (說明:slaves文件中可以寫ip地址,也可以寫成/etc/hosts里從機的主機名,任選一種即可)

slave1
slave2
  • core-site.xml

可參見幫助:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml

這個是hadoop的核心配置文件,這里需要配置的主要兩個屬性,

fs.defaultFS配置了hadoop的HDFS系統的命名,位置為主機namenode的9000端口;

hadoop.tmp.dir配置了hadoop的tmp目錄的根位置。需要新建一個tmp目錄

<configuration>
   <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
   </property>
   <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/mytestzk/hadoop-2.7.4/tmp</value>
   </property>
</configuration>
  • hdfs-site.xml

可參見幫助:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

這個是hdfs的配置文件,dfs.namenode.name.dir配置namenode數據存放位置,dfs.datanode.data.dir配置datanode數據存放位置,

dfs.replication配置了文件塊的副本數,一般不大於從機的個數。

<configuration>
    <property>
     <name>dfs.namenode.name.dir</name>
        <value>file:/home/mytestzk/hadoop-2.7.4/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/mytestzk/hadoop-2.7.4/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
</configuration>

 

  • mapred-site.xml

可參見幫助:http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

這個是mapreduce任務的配置,由於hadoop2.x使用了yarn框架,所以要實現分布式部署,必須在mapreduce.framework.name屬性下配置為yarn。mapred.map.tasks和mapred.reduce.tasks分別為map和reduce的任務數,至於什么是map和reduce,可參考其它資料進行了解。

其它屬性為一些進程的端口配置,均配在主機下。

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

 

  • yarn-site.xml

可參見幫助:http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

該文件為yarn框架的配置,主要是一些任務的啟動位置

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
</configuration>

 

 

2:啟動:

格式化(在master上執行):bin/hdfs namenode -format

啟動HDFS(在master上執行):sbin/start-dfs.sh

 

3:檢查啟動結果:

查看集群狀態:hdfs dfsadmin –report

查看文件塊:hdfsfsck / -files -blocks

查看hdfs:http://master:50070(主機IP)

查看MapReduce:http://master:8088(主機IP)

運行jps查看進程:

HDFS

NameNode

DataNode

 

SecondaryNameNode

 

YARN

ResourceManager

NodeManager

 

4:測試:

創建linux 文件目錄:                     mkdir ~/hadoopinputfile

創建hadoop hdfs input目錄:     

bin/hadoop fs -mkdir /input

查看hdfs :

bin/hadoop fs -ls /
bin/hadoop fs -ls /input

上傳文件到hdfs input目錄:

bin/hadoop fs -put ~/hadoopinputfile/* /input

查看hdfs輸出文件內容

bin/hadoop fs -cat /output/part-r-00000        

運行hadoop自帶的wordcount:   

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-example-2.7.4.jar wordcount /input /output

 

常用hdfs命令:

查看當前目錄信息 hdfs dfs -ls /input

上傳文件 hdfs dfs -put /本地路徑 /hdfs路徑

下載文件到本地 hdfs dfs -get /hdfs路徑 /本地路徑

創建文件夾 hdfs dfs -mkdir /input

創建多級文件夾 hdfs dfs -mkdir -p /input/temp

移動hdfs文件 hdfs dfs -mv /hdfs路徑 /hdfs路徑

復制hdfs文件 hdfs dfs -cp /hdfs路徑 /hdfs路徑

刪除hdfs文件 hdfs dfs -rm /test.txt

刪除hdfs文件夾 hdfs dfs -rm -r /input

查看hdfs中的文件

hdfs dfs -cat /文件

hdfs dfs -tail -f /文件

查看文件夾中有多少個文件 hdfs dfs -count /文件夾

查看hdfs的總空間 hdfs dfs -df / 

修改副本數 hdfs dfs -setrep 1 /temp.txt

如果在上傳文件到hdfs時遇到權限問題,很有可能與hdfs文件夾的用戶組有關系,可以用下面命令來修改hdfs 文件夾的權限和owner


修改hdfs的權限
sudo hdfs dfs -chmod -R 755 /input

修改hdfs文件的所有者
sudo hdfs dfs -chown -R {user} /input
修改文件所屬組 hadoop fs -chgrp [-R] {group} /input

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM