什么是HDFS?
HDFS是Hadoop Distributed File System的简写,即分布式文件系统。
NameNode负责管理与维护HDFS目录系统并控制文件的读写
DataNode负责存储数据
对于HDFS的数据存取
用cluster集群架构来存储大数据文件,通过Streaming来存取数据集,并且HDFS是批处理,而不是实时互动处理。存取模式是一次写入多次读取(write-once-read-many)。
HDFS存储架构
系统将大数据文件分成多个区块,每个区块64MB。一个文件区块默认复制成三份,文件区块损坏时,系统会找其他DataNode上的副本,来恢复数据,维持三份副本的策略。
HDFS机架感知功能
将副本放在不同的机架数据节点里,防止一个机架受损导致数据遗失。
HDFS命令
hadoop fs -命令
常用HDFS命令:
hadoop fs -mkdir
hadoop fs -ls
hadoop fs -cat
hadoop fs -cp
hadoop fs -rm
hadoop fs -copyFromLocal //复制本地文件到HDFS
hadoop fs -put //复制本地文件到HDFS
hadoop fs -copyToLocal //将HDFS文件复制到本地
hadoop fs -get//将HDFS文件复制到本地
创建用户目录
hadoop fs -mkdir /user
hadoop fs -mkdir /user/hduser
hadoop fs -mkdir /user/hduser/test
或
hadoop fs -mkdir -p /user/hduser/test
注:如果出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable这条信息就依次进行以下操作,更新glibc版本(一般都是glibc版本过低的原因导致的,可以用hadoop checknative -a
检查一下)
yum install svn autoconfautomake libtool cmake ncurses-devel openssl-devel gcc*
cd /usr/local/lib
wget -c http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar -zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build && cd build
../configure --prefix=/opt/glibc-2.14
make
sudo make install
cp /etc/ld.so.c* /opt/glibc-2.14/etc/
ln -sf /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
strings /lib64/libc.so.6 | grep GLIBC
vim /etc/sysconfig/i18n
# 添加下面的
LC_ALL=C
export LC_ALL
# 再执行下面的语句,使之生效
source /etc/sysconfig/i18n
用hadoop fs -ls -R /
查看创建的目录
复制文件
hadoop fs -copyFromLocal /usr/local/hadoop/README.txt /user/hduser/test/test1.txt
注:如果失败,可能是没有关闭防火墙,CentOS6中永久关闭防火墙
service iptables stop
chkconfig iptables off
强制复制
hadoop fs -copyFromLocal -f /usr/local/hadoop/README.txt /user/hduser/test/test1.txt
PS:
允许一次复制多个文件
使用 -put复制会直接覆盖文件
put可使用标准输入
echo 123 | hadoop fs -put - /user/hduser/test/echoin
使用以下命令查看各节点情况
hadoop dfsadmin -report
使用以下命名查看文件内容
hadoop fs -cat /user/hduser/test/test1.txt|more
将HDFS文件复制到本地
hadoop fs -copyToLocal /user/hduser/test/
删除文件
hadoop fs -rm /user/hduser/test/echoin
web页面进入HDFS文件系统
master:50070