【Hadoop】分布式文件系统HDFS
HDFS分布式文件系统(Hadoop Distributed File System)源于Google的GFS论文,发表于2003年
1.概述及设计目标
如果让我们设计一个分布式文件系统,咋办?
针对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
缺点:不管文件多大,都存储在一个节点上,在进行数据处理的时候很难进行并行处理,节点可能就成为网络瓶颈,很难进行大数据的处理,存储很男均衡,每个节点的利用率低
按块存储------HDFS(128M),文件以多副本方式存储
设计目标:非常巨大的分布式文件系统,运行在普通廉价的硬件上,易扩展、为用户提供性能不错的文件存储服务。
2.架构
1个Master(NameNode/NN) 带N个Slaves(DataNode/DN)
1个文件被拆分成多个Block:blocksize128M -------130M=>2个Block-----> 128M 和 2M
NN:负责客户端的响应,负责元数据管理(文件名称、副本系数、Block存放DN)
DN:存储用户的文件对应的数据块(Block),定期向NN发送心跳信息,汇报本身及其所有的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分布在不同节点上
replication factor :副本因子
All blocks in a file except the last block are the same size
3.HDFS副本存放策略:存放于不同的机架,至少2个
4.Hadoop伪分布式安装:
1)jdk安装:
创建文件夹mkdir /usr/java
解压tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/
添加到系统环境变量vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_55
export PATH=$PATH:$JAVA_HOME/bin
使得环境变量生效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
格式化文件系统(仅第一次使用,不需要重复执行)
hadoop namenode -format
启动HDFS -------sbin/start-dfs.sh
验证是否启动成功使用 jps 或者使用浏览器方式验证是否成功
Jps
NameNode
SecondaryNameNode
DataNode
6)停止HDFS
sbin/stop-dfs.sh
5.HDFS环境shell命令的使用
ls get mkdir rm put cat get rm
hadoop fs-ls /查看 hadoop fs-mkdir /test创建文件夹 hadoop fs-mkdir -p /test/a/b递归创建文件夹.....