----尚硅谷学习笔记整理
一、HDFS使用场景
适合一次写入、多次读出的场景,且不支持文件的修改,适合用来做数据分析。
二、HDFS的优缺点分析
1、优点
- 高容错性:数据自动保存多个副本,通过增加副本的形式,提高容错性;某一个副本丢失后,它可以自动恢复
- 适合处理大数据:适合处理甚至PB级别的数据,百万规模以上的文件数量
- 可构建在廉价机器上,多副本机制,提高可靠性
2、缺点
- 不适合低时延数据访问,比如毫秒级别的存储数据
- 无法对大量小的文件进行存储:NameNode的内存优先,小文件存储的寻址时间会超过读取时间,违反了HDFS的设计目标
- 不支持并发写入,文件随机修改,仅支持数据append追加
三、HDFS组成架构
1、Client :客户端
1)文件切分、文件上传HDFS时,客户端将文件切分成一个一个block,然后进行上传
2)与namenode节点交互,获取文件的位置信息
3)与datanode节点交互,读取写入数据
4)提供一些命令管理hdfs,比如namenode格式化
5)访问hdfs,增删改查
2、NameNode:管理者
1)管理hdfs的名称空间
2)配置副本策略
3)管理block映射信息
4)处理客户端请求
3、DataNode:执行者
1)存储实际的数据块
2)执行数据块的读写操作
4、Secondary NameNode:非热备,辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode,紧急情况下可辅助恢复NameNode
四、HDFS文件块大小
大小设置主要取决于:磁盘传输速率
为什么不能设置过大或者过小?
1、HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置
2、如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始的位置所需时间,导致程序处理这块数据很慢。
五、HDFS基本命令
1、启动hadoop集群
2、-help:输出命令参数
3、创建目录、查看目录
4、列出/user目录下的所有目录和文件
Hadoop dfs -ls /user
5、列出/user目录及其子目录下的所有文件(谨慎使用)
hadoop dfs -ls -R /user
6、创建/soft目录
hadoop dfs -mkdir /soft
7、创建多级目录
hadoop dfs -mkdir -p /apps/windows/2017/01/01
8、将本地的wordcount.jar文件上传到/wordcount目录下
hadoop dfs -put wordcount.jar /wordcount
9、下载words.txt文件到本地
hadoop dfs -get /words.txt
10、将/stu/students.txt文件拷贝到本地
hadoop dfs -copyToLocal /stu/students.txt
11、将word.txt文件拷贝到/wordcount/input/目录
hadoop dfs -copyFromLocal word.txt /wordcount/input
12、将word.txt文件从本地移动到/wordcount/input/目录下
hadoop dfs -moveFromLocal word.txt /wordcount/input/
13、将/stu/students.txt拷贝一份为/stu/students.txt.bak
hadoop dfs -cp /stu/students.txt /stu/students.txt.bak
14、将/flume/tailout/目录下的子目录或文件都拷贝到/logs目录(如果此目录不存在会创建)下
hadoop dfs -cp /flume/tailout/ /logs
15、将/word.txt文件重命名为/words.txt
hadoop dfs -mv /word.txt /words.txt
16、将/words.txt文件移动到/wordcount/input/目录下
hadoop dfs -mv /words.txt /wordcount/input/
17、将/ws目录以及子目录和文件都删除(谨慎使用)
hadoop dfs -rm -r /ws
18、删除以"xbs-"开头的目录及其子目录
hadoop dfs -rm -r /xbs-*
19、将/wordcount/output2/目录下的a.txt文件删除
hadoop dfs -rm /wordcount/output2/a.txt
20、将/wordcount/input/目录下面的所有文件都删除
hadoop dfs -rm /wordcount/input/*
21、查看HDFS集群的磁盘空间使用情况
hadoop dfs -df -h
22、查看/word.txt文件的内容
hadoop dfs -cat /word.txt
23、将name.txt文件中的内容添加到/wordcount/input/words.txt文件中
hadoop dfs -appendToFile name.txt /wordcount/input/words.txt
24、动态查看/wordcount/input/words.txt文件的内容
hadoop dfs -tail -f /wordcount/input/words.txt
25、统计/flume目录总大小
hadoop dfs -du -s -h /flume
26、分别统计/flume目录下各个子目录(或文件)大小
hadoop dfs -du -s -h /flume/*
27、运行jar包中的程序
//hadoop jar + 要执行的jar包 + 要运行的类 + 输入目录 + 输出目录
hadoop jar wordcount.jar com.xuebusi.hadoop.mr.WordCountDriver /wordcount/input /wordcount/out