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
這個是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