一.hadoop简介及其原理
HDFS原理介绍
HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。
1.HDFS的组成:
-
NameNode:Master节点(也称元数据节点),是系统唯一的管理者。负责元数据的管理(名称空间和数据块映射信息);配置副本策略;处理客户端请求
-
DataNode:数据存储节点(也称Slave节点),存储实际的数据;执行数据块的读写;汇报存储信息给NameNode
-
Sencondary NameNode:分担namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。注意:在hadoop 2.x 版本,当启用 hdfs ha 时,将没有这一角色
-
client:系统使用者,调用HDFS API操作文件;与NameNode交互获取文件元数据;与DataNode交互进行数据读写。注意:写数据时文件切分由Client完成
热备份:b是a的热备份,如果a坏掉。那么b立即运行代替a的工作
冷备份:b是a的冷备份,如果a坏掉。那么b不能立即代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失
2.hdfs架构原则
-
元数据与数据分离:文件本身的属性(即元数据)与文件所持有的数据分离
-
主/从架构:一个HDFS集群是由一个NameNode和一定数目的DataNode组成
-
一次写入多次读取:HDFS中的文件在任何时间只能有一个Writer。当文件被创建,接着写入数据,最后,一旦文件被关闭,就不能再修改
-
移动计算比移动数据更划算:数据运算,越靠近数据,执行运算的性能就越好,由于hdfs数据分布在不同机器上,要让网络的消耗最低,并提高系统的吞吐量,最佳方式是将运算的执行移到离它要处理的数据更近的地方,而不是移动数据
二.部署
实验环境:
- rhel 7.3 firewalld is disabled
主机名(IP) | 服务 |
---|---|
server5(172.25.254.5) | hdfs,nfs,(namenode) |
server6(172.25.254.6) | nfs,(datanode) |
server7(172.25.254.7) | nfs,(datanaode) |
server8(172.25.254.8) | 客户端,nfs,(datanode) |
1.hadoop部署及其测试
1.建立hadoop用户,并且设置密码
[root@server5 ~]# useradd -u 1000 hadoop
[root@server5 ~]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
[root@server5 ~]# passwd hadoop
2.进入到hadoop用户下,官网下载hadoop安装包并且进行安装,需要配置java的运行环境,因此也需要java的压缩包
[root@server5 ~]# mv hadoop-3.0.3.tar.gz jdk-8u181-linux-x64.tar.gz /home/hadoop/
[root@server5 ~]# su - hadoop
[hadoop@server5 ~]$ tar zxf jdk-8u181-linux-x64.tar.gz
[hadoop@server5 ~]$ ln -s jdk1.8.0_181/ java
[hadoop@server5 ~]$ tar zxf hadoop-3.0.3.tar.gz
[hadoop@server5 ~]$ ln -s hadoop-3.0.3 hadoop
3.在hadoop的配置文件中添加java的路径
[hadoop@server5 hadoop]$ pwd
/ho