1.hdfs的工作機(jī)制:
1.1、客戶把一個文件存入hdfs渤涌,其實(shí)hdfs會把這個文件切塊后佩谣,分散存儲在N臺linux機(jī)器系統(tǒng)中(負(fù)責(zé)存儲文件塊的角色:data node)<準(zhǔn)確來說:切塊的行為是由客戶端決定的>
1.2、一旦文件被切塊存儲实蓬,那么茸俭,hdfs中就必須有一個機(jī)制,來記錄用戶的每一個文件的切塊信息安皱,及每一塊的具體存儲機(jī)器(負(fù)責(zé)記錄塊信息的角色是:name node)
1.3调鬓、為了保證數(shù)據(jù)的安全性,hdfs可以將每一個文件塊在集群中存放多個副本(到底存幾個副本酌伊,是由當(dāng)時存入該文件的客戶端指定的)
2.hdfs集群結(jié)構(gòu)
3.安裝hdfs集群
3.1?核心配置參數(shù):
1)?指定hadoop的默認(rèn)文件系統(tǒng)為:hdfs
2)?指定hdfs的namenode節(jié)點(diǎn)為哪臺機(jī)器
3)?指定namenode軟件存儲元數(shù)據(jù)的本地目錄 ;?指定datanode軟件存放文件塊的本地目錄
3.2 修改/usr/apps/hadoop-3.2.1/etc/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_60
3.3?修改core-site.xml
<configuration>
? ? ? ? <property>
? ? ? ? ? ? ? ? <name>fs.defaultFS</name>
? ? ? ? ? ? ? ? <value>hdfs://node01:9000</value>
? ? ? ? </property>
</configuration>
3.4?修改hdfs-site.xml
<configuration>
? ? ? ? <property>
? ? ? ? ? ? ? ? <name>dfs.namenode.name.dir</name>
? ? ? ? ? ? ? ? <value>/usr/apps/dfs/namenode</value>
? ? ? ? </property>
? ? ? ? <property>
? ? ? ? ? ? ? ? <name>dfs.datanode.data.dir</name>
? ? ? ? ? ? ? ? <value>/usr/apps/dfs/datanode</value>
? ? ? ? </property>
</configuration>
4.啟動hdfs
4.1 配置hadoop環(huán)境變量
HADOOP_HOME=/root/apps/hadoop-2.8.0
export?PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.2??初始化namenode的元數(shù)據(jù)目錄
要在node01上執(zhí)行hadoop的一個命令來初始化namenode的元數(shù)據(jù)存儲目錄
hadoop namenode -format
[if !supportLists]l? [endif]創(chuàng)建一個全新的元數(shù)據(jù)存儲目錄
[if !supportLists]l? [endif]生成記錄元數(shù)據(jù)的文件fsimage
生成集群的相關(guān)標(biāo)識:如:集群id——clusterID
然后腾窝,啟動namenode進(jìn)程(在hdp-01上)
hadoop-daemon.sh start namenode(啟動完后,首先用jps查看一下namenode的進(jìn)程是否存在)
netstat -nltp | grep pid 查看namenode端口居砖,用端口訪問頁面
然后虹脯,啟動眾datanode們(在任意地方)
hadoop-daemon.sh start datanode
5.用自動批量啟動腳本來啟動HDFS
1) 先配置hdp-01到集群中所有機(jī)器(包含自己)的免密登陸
2)?配完免密后,可以執(zhí)行一次? ssh 0.0.0.0
3) 修改hadoop安裝目錄中/etc/hadoop/slaves(把需要啟動datanode進(jìn)程的節(jié)點(diǎn)列入)