HDFS分布式文件系統(tǒng)(Hadoop Distributed File System)源于Google的GFS論文,發(fā)表于2003年
1.概述及設(shè)計目標(biāo)
如果讓我們設(shè)計一個分布式文件系統(tǒng),咋辦?
針對4個文件:(file1=0.5T.file2=1T.file3=20G.file4=50G)
file1:node1 node2 node3 ;file2:node2 node3 node4;file3:node3 node4 node5;file4:node5 node6 node7
缺點:不管文件多大,都存儲在一個節(jié)點上,在進(jìn)行數(shù)據(jù)處理的時候很難進(jìn)行并行處理,節(jié)點可能就成為網(wǎng)絡(luò)瓶頸,很難進(jìn)行大數(shù)據(jù)的處理,存儲很男均衡,每個節(jié)點的利用率低
按塊存儲------HDFS(128M),文件以多副本方式存儲
設(shè)計目標(biāo):非常巨大的分布式文件系統(tǒng),運(yùn)行在普通廉價的硬件上,易擴(kuò)展、為用戶提供性能不錯的文件存儲服務(wù)。
2.架構(gòu)
1個Master(NameNode/NN)? ? 帶N個Slaves(DataNode/DN)
1個文件被拆分成多個Block:blocksize128M? ? ?-------130M=>2個Block----->? 128M 和 2M
NN:負(fù)責(zé)客戶端的響應(yīng),負(fù)責(zé)元數(shù)據(jù)管理(文件名稱、副本系數(shù)、Block存放DN)
DN:存儲用戶的文件對應(yīng)的數(shù)據(jù)塊(Block),定期向NN發(fā)送心跳信息,匯報本身及其所有的block信息,健康狀況
A typical deployment has a dedicated machine that runs only the NameNode software. Each of the other machines in the cluster runs one instance of the DataNode software. The architecture does not preclude running multiple DataNodes on the same machine but in a real deployment that is rarely the case.
NameNode + N個DataNode
建議:NameNode和DataNode分布在不同節(jié)點上
replication factor :副本因子
All blocks in a file except the last block are the same size
3.HDFS副本存放策略:存放于不同的機(jī)架,至少2個
4.Hadoop偽分布式安裝:
1)jdk安裝:
創(chuàng)建文件夾mkdir /usr/java
解壓tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/
添加到系統(tǒng)環(huán)境變量vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_55
export PATH=$PATH:$JAVA_HOME/bin
使得環(huán)境變量生效source /etc/profile
驗證Java是否配置成功Java -v
2)配置ssh免登陸
sudo yum install ssh
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
3)下載并加壓hadoop
http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz
解壓:tar -zxvf?hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/itcast
4)配置文件修改($HADOOP_HOME/etc/hadoop)
hadoop-env.sh
? ? ? export JAVA_HOME=/usr/java/jdk1.7.0_65
core-site.xml
? ? ? ? ? <property>
? ? ? ? ? ? ? ?<name>fs.defaultFS</name>
? ? ? ? ? ? ? ? <value>hdfs://itcast01:9000hadoop.tmp.dir/itcast/hadoop-2.6.0-cdh5.7.0/tmp</value>
? ? ? ? ? </property>
hdfs-site.xml
? ? <property>
? ? ? ? ? <name>dfs.replication1</name>
? ? </property>
5)啟動hdfs
格式化文件系統(tǒng)(僅第一次使用,不需要重復(fù)執(zhí)行)
hadoop namenode -format
啟動HDFS -------sbin/start-dfs.sh
驗證是否啟動成功使用? jps? 或者使用瀏覽器方式驗證是否成功
?Jps
?NameNode
SecondaryNameNode
?DataNode
6)停止HDFS
sbin/stop-dfs.sh
5.HDFS環(huán)境shell命令的使用
ls? ?get? ?mkdir? ?rm? put? cat? ?get? ?rm
hadoop fs-ls /查看? ?hadoop fs-mkdir /test創(chuàng)建文件夾? ?hadoop fs-mkdir -p /test/a/b遞歸創(chuàng)建文件夾.....