HDFS(自我修复的分布式文件系统)
HDFS概念:
磁盘块:
每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位。构建于单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块,该文件系统块的大小可以是磁盘块的整数倍。文件系统块一般为几千字节,而磁盘块一般为512字节。
HDFS块(block):
抽象块的两个好处:
1.文件的存储空间将以整个集群的空间大小存储,并不是单个node硬盘的大小。
2.可以备份数据块,如果有数据块损坏,将会读取备份的数据块,不影响用户的正常使用,并且会自动修复备份块的份数(即:将损坏的块重新从备份的块复制并存储)
显示块的信息:
[root@dlxa180 hadoop-0.20.3-dev]# bin/hadoop fsck / files -blocks
命令行接口
配置文件解释:
#设置hadoop默认文件系统
fs.default.name
hdfs://localhost:9000
#这里是设置文件系统块备份的数量
<name> dfs.replication</name>
<value>1</value>
基于文件系统操作
#查看HDFS文件列表
[root@dlxa180 hadoop-0.20.3-dev]# hadoop fs -ls
Found 4 items
drwxr-xr-x - root supergroup 0 2011-11-09 14:39 /user/root/in
drwxr-xr-x - root supergroup 0 2011-11-09 14:36 /user/root/input
drwxr-xr-x - root supergroup 0 2011-11-09 14:41 /user/root/out
drwxr-xr-x - root supergroup 0 2011-11-09 14:36 /user/root/output
[root@dlxa180[微软中国1] tools]# hadoop fs -copyFromLocal /home/tools/ucarp-1.5.2.tar.gz aaa
copyFromLocal: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create file/user/root/aaa. Name node is in safe mode.
[root@dlxa180 tools]# hadoop dfsadmin -safemode[微软中国2] leave
Safe mode is OFF
[root@dlxa180 tools]# hadoop fs -copyFromLocal /home/tools/ucarp-1.5.2.tar.gz aaa
[root@dlxa180 tools]# hadoop fs -ls
Found 5 items
-rw-r--r-- 1 root supergroup 429089 2011-11-10 14:02 /user/root/aaa
drwxr-xr-x - root supergroup 0 2011-11-09 14:39 /user/root/in
drwxr-xr-x - root supergroup 0 2011-11-09 14:36 /user/root/input
drwxr-xr-x - root supergroup 0 2011-11-09 14:41 /user/root/out
drwxr-xr-x - root supergroup 0 2011-11-09 14:36 /user/root/output
HDFS API之旅
上传本地文件到HDFS
[root@dlxa180 hadoop-0.20.3-dev]# echo "hello my hadoop hdfs" > test1
[root@dlxa180 hadoop-0.20.3-dev]# bin/hadoop dfs -put test1 test
[root@dlxa180 hadoop-0.20.3-dev]# bin/hadoop dfs -ls test
Found 1 items
-rw-r--r-- 1 root supergroup 21 2011-11-09 14:12 /user/root/test
将HDFS上的文件复制到本地
[root@dlxa180 hadoop-0.20.3-dev]# bin/hadoop dfs -get test getin
[root@dlxa180 hadoop-0.20.3-dev]# cat getin
hello my hadoop hdfs
删除HDFS上的文件
查看HDFS下的某个文件
[root@dlxa180 hadoop-0.20.3-dev]# bin/hadoop dfs -cat aa/*
hello word
hello hadoop
管理与更新
#查看HDFS的基本信息
[root@dlxa180 hadoop-0.20.3-dev]# bin/hadoop dfsadmin –report
#离开安全模式
[root@dlxa180 hadoop-0.20.3-dev]#bin/hadoop dfsadmin -safemode leave
#进入安全模式
[root@dlxa180 hadoop-0.20.3-dev]#bin/hadoop dfsadmin –safemode enter
添加节点
可以将namenode的hadoop目录复制到新的数据节点上,并修改master和slave
负载均衡:
[root@dlxa180 hadoop-0.20.3-dev]#bin/start-balancer.sh
starting balancer, logging to /usr/local/hadoop-0.20.3-dev/logs/hadoop-root-balancer-dlxa180.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
The cluster is balanced. Exiting...
Balancing took 273.0 milliseconds
[微软中国1]将本地文件上传到HDFS中
[微软中国2]如果是安全模式,可以用此命令离开安全模式!