初识hadoop之分布式文件系统(HDFS)
Hadoop常用发行版:
Apache Hadoop
CDH Cloudera Distributed Hadoop
HDP Hortonworks Data Platfrom
分布式文件系统(HDFS)
HDFS架构
1个master(NameNode/NN)带n个slaves(DataNode/DN)
HDFS/YARN/HBase都是类似结构
一个文件会被拆分成多个Block
blocksize:128M
130M ==> 2个Block:128M和2M
NN:
1)负责客户端请求的响应
2)负责元数据(文件的名称、副本系数、Block存放的DN)的管理
DN:
1)存储用户的文件对应的数据块(Block)
2)要定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况
A typical deployment has a dedicated machine that runs only the NameNode software. Each of the other machines in the cluster runs one instance of the DataNode software.
NameNode + N个DataNode
建议:NN和DN部署在不同的节点上
replication factor:副本系数、副本因子
HDFS环境搭建
使用版本:hadoop-2.6.0-cdh5.7.0
Hadoop伪分布式安装步骤
1) jdk安装
解压:tar –zxvf jdk-7u79-linux-x64.tar.gz –C ~/app
添加到系统环境变量:~/.bash_profile
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_79
eport PATH=$JAVA_HOME/bin:$PATH
使得环境变量生效:source ~/.bash_profile
验证java是否配置成功:java –version
2) 安装ssh
sudo yum install ssh
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorizes_keys
3) 下载并解压hadoop
下载:直接在cdh网站下载
解压:tar –zxvf Hadoop-2.6.0-cdh5.7.0.tar.gz –C ~/app
4) hadoop配置文件的修改(hadoop_home/etc/hadoop)
hadoop-evn.sh
export JAVA_HOME=/home/Hadoop/app/jdk1.7.0_79
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop000:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/tmp</value>
</property>
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
slaves(配置DN的个数)添加主机名称
5) 启动hfds
格式化文件系统(仅第一次执行即可,不要重复执行,在bin目录下执行,即在客户端执行):
hdfs namenode –format
启动hdfs:sbin/start-dfs.sh
验证是否启动成功:
jps
DataNode
SecondaryNameNode
NameNode
浏览器访问方式:http://hadoop000:50070
6) 停止hdfs
sbin/stop-dfs.sh
将hadoop的bin目录配置到环境变量当中
vi ~/.bash_profile
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
export PATH=$HADOOP_HOME/bin:$PATH
环境变量生效:
source ~/.bash_profile
查看环境变量:
echo $HADOOP_HOME
hdfs常用操作命令:
hdfs dfs(hadoop fs) +
-ls + / 查看根目录下的文件和文件夹
-mkdir + /test 在根目录下创建test文件夹
-put 文件名 + / 将文件上传到根目录当中(拷贝文件)
-copyFromLocal hello.txt + /test/a/b/h.txt 将文件拷贝到指定路径中
-text(-cat) + /文件名 查看文件的内容
-mkdir –p + /test/a/b 递归创建文件夹
-lsr + / 递归展示文件夹(-ls –R + /)
-get + /test/a/b/h.txt 将文件拷贝到本地
-rm + /hello.txt 删除文件
-rm + -R /test 删除文件夹