之前在看查看datanode数据的时候觉得很奇怪,我在hdfs上有两个用户,一个是默认生成的http://master:9000/user/hduser,(其中master是linux下我的主机名hduser是linux下我的用户名)另一个是使用了hive存储之后hdfs自动建立的http://master:9000/user/hive。但是在datanode节点查看之后,总是找不到hive存储的文件,几番折腾之后终于弄清楚。
首先,数据存在哪里?
我们知道hadoop集群遵循的是主/从的架构,namenode很多时候都不作为文件的读写操作,只负责任务的调度和掌握数据块在哪些datanode的分布,保存的是一些数据结构,是namespace或者类似索引之类的东西,真正的数据存储和对数据的读写是发生在datanode里的。找到${HADOOP_HOME}/ect/hadoop/hdfs-site.xml文件,里面有你自己定义的dfs.datanode.data.dir一项就是你数据存放的位置。如果你没有修改过,就在放默认项,具体一些默认的配置可以查看这个文档 http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml [1]。进入datanode的数据目录之后,一层一层的cd直到找到真正数据所存放的地方。如图1所示。