分布式文件系统HDFS
HDFS概述及设计目标
什么是HDFS
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS
源自Google的GFS论文
发表于2003年,HDFS是GFS的克隆版
HDFS的设计目标
- 非常巨大的分布式文件系统
- 运行在普通廉价的硬件上
- 以扩展,为用户提供性能不错的文件存储服务
HDFS架构
1个Master(NameNode/NN) 带 N个Slaves(DataNode/DN)
1个文件会被拆分成多个blocks
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
建议:NN和DN是部署在不同的节点上
HDFS副本机制
HDFS环境搭建
hadoop伪分布式安装步骤
- jdk安装
- 安装ssh
yum install ssh
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys - 下载并解压hadoop
地址
解压:tar -zxvf hadoop-2.6.0-xxxx - hadoop配置文件的修改(hadoop_home/etc/hadoop)
修改hadoop-env.sh
修改core-site.xml
修改hdfs-site.xml
修改slaves
- 启动hdfs
格式化系统(仅第一次执行即可,不要重复执行): hdfs namenode -format
启动:hdfs:sbin/start-dfs.sh
验证是否启动成功:
方式1:jps
方式2
浏览器访问方式:http://localhost:50070 - 停止hdfs
sbin/stop-dfs.sh
HDFS shell
hdfs shell常用命令的使用,包括ls,mkdir,put,get,rm
ls
hdfs dfs -ls /
hdfs dfs -ls -R /
mkdir
hdfs dfs -mkdir /test1
hdfs dfs -mkdir -p /test/a/b
put copyFromLocal
hdfs dfs -put ./hadoop.txt /
hdfs dfs -copyFromLocal hadoop.txt /test/a/b/h.txt
get
hdfs dfs -get /test/a/b/h.txt hello.txt
rm
hdfs dfs -rm /hadoop.txt
hdfs dfs -rm -R /test
cat
hdfs dfs -cat /hadoop.txt
text
hdfs dfs -text /hadoop.txt