您好,登錄后才能下訂單哦!
1、環境準備
系統:
centos6.5
JDK1.8
創建hadoop安裝目錄目錄
mkdir /bdapps tar xf hadoop-2.7.5.tar.gz -C /bdapps/ cd /bdapps/ ln -sv hadoop-2.7.5 hadoop cd hadoop
創建環境腳本
vim /etc/profile.d/hadoop.sh
內容如下:
export HADOOP_PREFIX=/bdapps/hadoop export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin export HADOOP_YARN_HOME=${HADOOP_PREFIX} export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX} export HADOOP_COMMON_HOME=${HADOOP_PREFIX} export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
2、創建用戶和組
出于安全等目的,通常需要用特定的用戶來運行hadoop不同的守護進程,例如,以hadoop為組,分別用三個用戶yarn、hdfs、和mapred來運行相應的進程
groupadd hadoop useradd -g hadoop yarn useradd -g hadoop hdfs useradd -g hadoop mappred
創建數據和日志目錄
hadoop需要不同權限的數據和日志目錄,這里以/data/hadoop/hdfs為hdfs數據存儲目錄。
確保hdfs用戶對/data/目錄有權限
mkdir -pv /data/hadoop/hdfs/{nn,dn,snn} chown -R hdfs:hadoop /data/hadoop/hdfs/
然后,在hadoop的安裝目錄中創建logs目錄,并修改hadoop所有文件的屬主和屬組
cd /bdapps/hadoop/ mkdir logs chmod g+w logs chown -R yarn:hadoop ./*
3、配置hadoop
etc/hadoop/core-site.xml
core-site.xml文件包含了NameNode主機地址以及其監聽RPC端口等信息,對于偽分布式模型的安裝來說,其主機地址為localhost。NameNode默認使用的RPC端口為8020。其簡要的配置內容如下所示
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:8020</value> <final>true</final> </property> </configuration>
etc/hadoop/hdfs-site.xml
hdfs-site.xml主要用于配置HDFS相關的屬性,例如復制因子(即數據塊的副本數)、NN和DN用于存儲數據的目錄等。數據塊的副本數對于偽分布式的Hadoop應該為1,而NN和DN用于存儲的數據的目錄為前面的步驟中專門為其創建的路徑。另外,前面的步驟中也為SNN創建了相關的目錄,這里也一并配置其為啟用狀態。
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///data/hadoop/hdfs/nn</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///data/hadoop/hdfs/dn</value> </property> <property> <name>fs.checkpoint.dir</name> <value>file:///data/hadoop/hdfs/snn</value> </property> <property> <name>fs.checkpoint.edits.dir</name> <value>file:///data/hadoop/hdfs/snn</value> </property> </configuration>
解釋:
dfs.replication 副本數量為1,偽分布式部署是將所有角色部署在本地,所以副本只在本地保留一份
dfs.namenode.name.dir namenode的路徑
dfs.datanode.data.dir 數據節點的路徑
dfs.dcheckpoint.dir 檢查點文件存放路徑
fs.checkpoint.edit.dir 檢查點編輯目錄
注意:如果需要其他用戶對hdfs有寫入權限,還需要在hdfs-site.xml添加一項屬性定義。
<property> <name>dfs.permissions</name> <value>false</value> </property>
這個配置意思是不對dfs的權限做嚴格檢查,這樣其他用戶就有寫入權限
etc/hadoop/mapred-site.xml
mapred-site.xml文件用于配置集群的MapReduce framework,此處應該制定使用yarn,另外的可用值還有local和classic。mapred-site.xml.template,只需要將其復制mapred-site.xml即可。
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
其配置示例如下面的內容
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
etc/hadoop/yarn-site.xml
yarn-site.xml 用于配置YARN進程及YARN的相關屬性,首先需要指定ResourceManager守護進程的主機和監聽的端口,對于偽分布式模型來講,其主機為localhost,
默認的端口為8032;其次需要指定ResourceManager使用的scheduler,以及NodeManager的輔助服務。一個簡要的配置示例如下所示:
<configuration> <property> <name>yarn.resourcemanager.address</name> <value>localhost:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>localhost:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>localhost:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>localhost:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>localhost:8088</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> </property> </configuration>
etc/hadoop/hadoop-env.sh和etc/hadoop/yarn-env.sh
hadoop的各守護進程依賴于JAVA_HOME的環境變量,如果有類似于前面步驟中通過/etc/profile.d/java.sh全局配置定義的JAVA_HOME變量即可正常使用。不過如果像我hadoop定義依賴到的特定JAVA環境,也可以編輯這兩個腳本文件,為其JAVA_HOME取消注釋并配置合適的值即可。此外,hadoop大多數守護進程默認使用的堆大小為1GB,但現實應用中,可能需要對其各類進程的堆內存大小做出調整,這只需要編輯此兩者文件中的相關環境變量值即可。例如HADOOP_HEAPSIZE、HADOOP_JOB_HISTORY_HEAPSIZE、JAVA_HEAP_SIZE和YARN_HEAP_SIZE等。
slave文件
slave文件存儲了當前集群所有slave節點的列表,對于偽分布式模型,其文件內容僅應該為localhost,這特的確是這個文件的默認值。因此,為分布式模型中,次文件的內容保持默認即可。
4、格式化HDFS
在HDFS的NN啟動之前需要先初始化其用于存儲數據的目錄。如果hdfs-site.xml中dfs.namenode.name.dir屬性指定的目錄不存在,格式化命令會自動創建之;如果事先存在,請確保其權限設置正確,此時格式操作會清除其內部的所有數據并重新建立一個新的文件系統,需要以hdfs用戶的身份執行如下命令
hdfs namenode -format
hdfs 命令
查看dhfs文件系統/目錄上有哪些文件和目錄,默認是為空
$ hdfs dfs -ls /
在hdfs文件系統上創建測試目錄test
$ hdfs dfs -mkdir /test $ hdfs dfs -ls / Found 1 items drwxr-xr-x - hdfs supergroup 0 2018-03-26 13:48 /test
注意:剛才創建的文件的屬組是supergroup,并不屬于hadoop,所有其他屬組為hadoop的用戶對改文件沒有寫入權限,前面hdfs-site.xml文件中有一個配置是
dfs.permissions,如果設置為false,則可賦予hadoop屬組的用戶寫入權限
將本地/etc/fstab 文件上傳到hdfs文件系統 /test目錄中
$ hdfs dfs -put /etc/fstab /test/fstab $ hdfs dfs -ls /test Found 1 items -rw-r--r-- 1 hdfs supergroup 223 2018-03-26 13:55 /test/fstab
查看dhfs文件系統上某個文件內容 使用cat命令
$ hdfs dfs -cat /test/fstab UUID=dbcbab6c-2836-4ecd-8d1b-2da8fd160694 / ext4 defaults 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 dev/vdb1 none swap sw 0 0
5、啟動hadoop
切換到hdfs用戶
su - hdfs
hadoop2的啟動等操作可通過其位于sbin路徑下的專用腳本進行
NameNode:hadoop-daemon.sh(start|stop)namenode
DataNode: hadoop-daemon.sh (start|stop) datanode
Secondary NameNode: hadoop-daemon.sh (start|stop) secondarynamenode
ResourceManager: yarn-daemon.sh(start|stop) nodemanager
啟動HDFS服務
HDFS有三個守護進程:namenode、datanode和secondarynamenode,他們都表示通過hadoop-daemon.sh腳本啟動或停止。以hdfs用戶執行相關命令即可,如下所示:
啟動namenode
hadoop-daemon.sh start namenode starting namenode, logging to /bdapps/hadoop/logs/hadoop-hdfs-namenode-SRV-OPS01-LINTEST01.out $ jps 99466 NameNode 99566 Jps
啟動secondarynamenode
hadoop-daemon.sh start secondarynamenode starting secondarynamenode, logging to /bdapps/hadoop/logs/hadoop-hdfs-secondarynamenode-SRV-OPS01-LINTEST01.out $ jps 100980 SecondaryNameNode 101227 Jps 99466 NameNode
啟動datanode
$ hadoop-daemon.sh start datanode starting datanode, logging to /bdapps/hadoop/logs/hadoop-hdfs-datanode-SRV-OPS01-LINTEST01.out $ jps 101617 DataNode 100980 SecondaryNameNode 101767 Jps 99466 NameNode
啟動yarn集群
切換成yarn用戶登錄系統,再啟動服務
YARN有兩個守護進程:resourcemanager和nodemanager,它們都可以通過yarn-daemon.sh腳本啟動或者停止。以yarn用戶執行相關命令即可。
啟動resourcemanager
yarn-daemon.sh start resourcemanager starting resourcemanager, logging to /bdapps/hadoop/logs/yarn-yarn-resourcemanager-SRV-OPS01-LINTEST01.out $ jps 110218 Jps 109999 ResourceManager
啟動nodemanager
yarn-daemon.sh start nodemanager starting nodemanager, logging to /bdapps/hadoop/logs/yarn-yarn-nodemanager-SRV-OPS01-LINTEST01.out $ jps 111061 Jps 110954 NodeManager 109999 ResourceManager
6、Web UU
HDFS和YARN ResourceManager各自提供了一個Web接口,通過這個接口可以檢查HDFS集群以及YARN集群的相關狀態信息,它們的訪問接口分別為如下所求,具體使用中,需要將
NameNodeHost和ReourceManageHost 分別改為其相應的主機地址。
HDFS-NameNode http://<ResourceManagerHost>:50070/
YARN-ResourceManager http://<ResourceManagerHost>:8088/
注意:yarn-site.xml文件中yarn.resourcemanager.webapp.address屬性的值如果定義為“localhost:8088”, 則其WebUI僅監聽于127.0.0.1地址上的8088端口
7運行測試程序
Hadoop-YARN 自帶了許多樣例程序,它們位于hadoop安裝路徑下的share/hadoop/mapreduce/目錄里,其中的hadoop-mapreduce-examples可用作mapreduce程序測試
yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /yarn/fstab /yarn/fstab.out
對hdfs文件系統上/yarn/fstab文件作單詞統計,統計結果存放在/yarn/fstab.out文件中
18/03/26 16:07:01 INFO client.RMProxy: Connecting to ResourceManager at localhost/127.0.0.1:8032 18/03/26 16:07:02 INFO input.FileInputFormat: Total input paths to process : 1 18/03/26 16:07:02 INFO mapreduce.JobSubmitter: number of splits:1 18/03/26 16:07:02 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1522044437617_0001 18/03/26 16:07:02 INFO impl.YarnClientImpl: Submitted application application_1522044437617_0001 18/03/26 16:07:02 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1522044437617_0001/ 18/03/26 16:07:02 INFO mapreduce.Job: Running job: job_1522044437617_0001 18/03/26 16:07:10 INFO mapreduce.Job: Job job_1522044437617_0001 running in uber mode : false 18/03/26 16:07:10 INFO mapreduce.Job: map 0% reduce 0% 18/03/26 16:07:15 INFO mapreduce.Job: map 100% reduce 0% 18/03/26 16:07:20 INFO mapreduce.Job: map 100% reduce 100% 18/03/26 16:07:20 INFO mapreduce.Job: Job job_1522044437617_0001 completed successfully 18/03/26 16:07:21 INFO mapreduce.Job: Counters: 49 File System Counters FILE: Number of bytes read=272 FILE: Number of bytes written=243941 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=320 HDFS: Number of bytes written=191 HDFS: Number of read operations=6 HDFS: Number of large read operations=0 HDFS: Number of write operations=2 Job Counters Launched map tasks=1 Launched reduce tasks=1 Data-local map tasks=1 Total time spent by all maps in occupied slots (ms)=2528 Total time spent by all reduces in occupied slots (ms)=2892 Total time spent by all map tasks (ms)=2528 Total time spent by all reduce tasks (ms)=2892 Total vcore-milliseconds taken by all map tasks=2528 Total vcore-milliseconds taken by all reduce tasks=2892 Total megabyte-milliseconds taken by all map tasks=2588672 Total megabyte-milliseconds taken by all reduce tasks=2961408 Map-Reduce Framework Map input records=6 Map output records=36 Map output bytes=367 Map output materialized bytes=272 Input split bytes=97 Combine input records=36 Combine output records=19 Reduce input groups=19 Reduce shuffle bytes=272 Reduce input records=19 Reduce output records=19 Spilled Records=38 Shuffled Maps =1 Failed Shuffles=0 Merged Map outputs=1 GC time elapsed (ms)=153 CPU time spent (ms)=1290 Physical memory (bytes) snapshot=447442944 Virtual memory (bytes) snapshot=4177383424 Total committed heap usage (bytes)=293076992 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=223 File Output Format Counters Bytes Written=191
查看統計結果
$ hdfs dfs -cat /yarn/fstab.out/part-r-00000
/ 1 /dev/pts 1 /dev/shm 1 /proc 1 /sys 1 0 10 1 2 UUID=dbcbab6c-2836-4ecd-8d1b-2da8fd160694 1 defaults 4 dev/vdb1 1 devpts 2 ext4 1 gid=5,mode=620 1 none 1 proc 2 sw 1 swap 1 sysfs 2 tmpfs 2
問題:
1、其他服務器無法連接hdfs的8020端口服務?
這是因為core-site.xml文件中配置的是localhost:8020,本機只會監聽在127.0.0.1地址上,要改成服務器實際IP才行
2、其他用戶在hdfs文件系統中沒有寫入權限?
默認只有hadoop用戶(以hadoop用戶啟動服務)有寫入權限,如果希望其他用戶有寫入權限,可以在hdfs-site.xml文件中加入以下配置
<property> <name>dfs.permissions</name> <value>false</value> </property>
或者修改hdfs文件系統上某個目錄的權限:
例如:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。