Hadoop是一个适合大数据的分布式存储与计算平台。
1.1核心构成
1.1.1HDFS架构
HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
Client:切分文件;访问HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。
NameNode:Master节点,在hadoop1.X中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。
DataNode:Slave节点,存储实际的数据,汇报存储信息给NameNode。
Secondary NameNode:辅助NameNode,分担其工作量;定期合并fsimage和fsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备。
(1) 主从结构
•主节点,只有一个: namenode
•从节点,有很多个: datanodes
(2) namenode负责:管理
•接收用户操作请求,可以实现对文件系统的操作(一般的操作方式有两种,命令行方式和Java API方式)
•维护文件系统的目录结构(用来对文件进行分类管理)。
•管理文件与block之间关系(文件被划分成了Block,Block属于哪个文件,以及Block的顺序好比电影剪辑),block与datanode之间关系。
(3) datanode负责:存储
•存储文件
•文件被分成block(block一般是以64M来划分,但每个Block块所占用的空间是文件实际的空间)存储在磁盘上,将大数据划分成相对较小的block块,这样可以充分利用磁盘空间,方便管理。
•为保证数据安全,文件会有多个副本(就好比配钥匙,都是为了预防丢失),这些副本会一块一块复制,分别存储在不同的DataNode上。
(4)HDFS的相关命令(区分dfs和fs)
https://www.cnblogs.com/sunddenly/p/3981583.html
-mkdir 在HDFS创建目录 hdfs fs -mkdir /data
-ls 查看当前目录 hdfs fs -ls /
-ls -R 查看目录与子目录
-put 上传一个文件 hdfs fs -put data.txt /data/input
-moveFromLocal 上传一个文件,会删除本地文件:ctrl + X
-copyFromLocal 上传一个文件,与put一样
-copyToLocal 下载文件 hdfs fs -copyToLocal /data/input/data.txt
-get 下载文件 hdfs fs -get /data/input/data.txt
-rm 删除文件 hdfs fs -rm /data/input/data.txt
-getmerge 将目录所有的文件先合并,再下载
-cp 拷贝: hdfs fs -cp /data/input/data.txt /data/input/data01.txt
-mv 移动: hdfs fs -mv /data/input/data.txt /data/input/data02.txt
-count 统计目录下的文件个数
-text、-cat 查看文件的内容 hdfs fs -cat /data/input/data.txt
-balancer 平衡操作
要从HDFS中删除文件,可以使用以下命令:
hadoop fs -rm -r -skipTrash /path_to_file/file_name
要从HDFS中删除文件夹,可以使用以下命令:
hadoop fs -rm -r -skipTrash /folder_name
例子:
创建文件夹:hadoop fs -mkdir input
查看文件: hadoop fs -ls
上传文件到本地:rz(本地选择mv_0000001.txt )
上传文件到HDFS:hadoop fs -put mv_0000001.txt input
查看input文件夹中文件:hadoop fs -ls input
查看文件:mv_0000001.txt
将HDFS中的文件复制到本地系统中:hadoop fs -get input/mv_0000001.txt output/
删除文件:hadoop fs -rm input/mv_0000001.txt
删除文件夹:hadoop fs -rm -r input
备注:进入/退出安全模式
有时,在hadoop启动时不能对文件系统进行如创建文件,删除文件之类的操作,此时,文件系统所处的状 态叫做安全模式,用途大家可以到网上搜一搜,笔者不在这里赘述(由于笔者属于初学者,HDFS上的东西还不多,节点也不多,所以笔者一般开启Hadoop后,不管有没有在安全模式,先输退出安全模式的命令)。
hadoop dfsadmin –safemode enter
hadoop dfsadmin –safemode leave