核心要点:
对外提供一个统一的“虚拟”目录树
文件分块存储在多台服务器(datanode)上
文件的物理存储位置信息存储在一台主节点(namenode)上
1. 安装HDFS
安装HDFS,就是准备大量linux服务器,安装hadoop软件,然后在不同的机器上启动不同的程序(namenode,datanode,客户端)
准备4台:
1台namenode
3台datanode
安装步骤:
a、准备4台linux机器(cts01,cts02,cts03,cts04),并做好基础配置:
a) IP地址;
b) hostname(一律小写+数字);
c) 域名映射/etc/hosts;
d) jdk;
e) 关闭防火墙;
f) ssh工具;
g) 时间同步(date -s '2018-04-08 11:42:30');
b、上传一个hadoop安装包,并且解压
c、修改配置文件
vi hdfs-site.xml
核心参数1:namenode在哪台机器上运行
参数名:dfs.namenode.rpc-address
参数值: cts01:9000
核心参数2:namenode存元数据的本地目录
参数名:dfs.namenode.name.dir
参数值:/root/hdpdata/name/
核心参数3:datnaode存文件块的本地目录
参数名:dfs.datanode.data.dir
参数值:/root/hdpdata/data/
辅助参数:secondarynamenode所在的机器
参数名:dfs.namenode.secondary.http-address
参数值:cts02:50090
<configuration> <property> <name>dfs.namenode.rpc-address</name> <value>cts01:9000</value> </property>
<property> <name>dfs.namenode.name.dir</name> <value>/root/hdpdata/name/</value> </property>
<property> <name>dfs.datanode.data.dir</name> <value>/root/hdpdata/data/</value> </property>
<property> <name>dfs.namenode.secondary.http-address</name> <value>cts02:50090</value> </property> </configuration> |
vi hadoop-env.sh
exportJAVA_HOME=/root/apps/jdk1.8.0_60
d、启动HDFS
在不同的机器起动不同的程序:cts01-->namenode cts02,03,04-->datanode
注意:集群第一次启动的时候,namenode的元数据目录需要先初始化生成:
在cts01上:hadoop namenode -format
手 动 启 动 集 群 | 在cts01上启动namenode: sbin/hadoop-daemon.sh start namenode
在cts02-04启动datanode: sbin/hadoop-daemon.sh start datanode
启动完后,可以用浏览器访问namenode提供的web服务,来查看HDFS的工作状态: http://cts01:50070 |
自带脚本批量启动 集 群 | 在cts01的hadoop目录中,修改slaves文件 vi slaves
然后,在cts01上,配好cts01-->cts01,02,03,04的免密登陆 然后,在cts01上,敲: start-dfs.sh 启动集群 stop-dfs.sh 关闭集群 |
2. HDFS的命令行客户端理解
访问HDFS,需要客户端程序,客户端程序在hadoop安装包中自带
启动命令行客户端: hadoop fs -put /本地/路径 /hdfs路径
但是,hadoop的客户端程序也许要一些必要的参数,才能正常工作:
核心参数1:指定HDFS所在的URI
jdbc:mysql://cts04:3306/db1
http://baidu.com:80/index.html
hdfs://cts01:9000/
核心参数2:客户端所要访问的默认文件系统
fs.defaultFS =hdfs://cts01:9000/
客户端一旦配置了这个参数,那么在访问HDFS路径时,就不需要写全URI了
核心参数3:上传文件时的切块大小配置
dfs.blocksize=128
核心参数4:上传文件时的副本数量配置
dfs.replication=3
精华:客户端程序可以运行在任何能够与HDFS集群联网的机器上,只是需要在那台机器上安装一个hadoop安装包,并且配置好客户端参数
3. HDFS的命令行客户端常用操作
查看目录
hadoop fs -ls /
上传文件
hadoop fs -put /本地/路径 /hdfs/路径
hadoop fs -put /root/a.txt /
下载文件
hadoop fs -get /hdfs/文件路径 /本地/路径
hadoop fs -get /a.txt /root/a.dat
创建目录
hadoop fs -mkdir -p /aaa/bbb
修改文件名/移动文件
hadoop fs -mv /hdfs/原路径 /hdfs/新路径
hadoop fs -mv /a.txt /aaa/bbb/a.doc
拷贝文件
hadoop fs -cp /a.txt /aaa/a.bak
删除文件
hadoop fs -rm /a.txt
hadoop fs -rm -r /aaa
查看文件内容
hadoop fs -cat /a.txt
hadoop fs -tail /a.log
hadoop fs -tail -f /a.log