HDFS搭建的三种模式
搭建前说明
在集群中, 一台服务器在集群中扮演的角色, 由该服务器上启动的进程决定. 即角色 = 进程.
Hadoop软件库是一个开源框架, 可使用编程模式跨计算机集群分布式的存储和处理大型数据集. 它从单个服务器扩展到数千台服务器, 每一台都提供本地计算和存储. 库本身不依靠硬件来提供高可用服务, 而是通过架构设计来检测和处理程序的故障, 从而在集群上提供高可用服务.
Hadoop生态圈包含的模块:
- HDFS:分布式文件系统,提供高可靠、高可用、可扩展以及对应用程序数据的高吞吐量访问。
- Zookeeper:用于分布式应用程序的高性能协调服务。
- Yarn:作业调度和资源管理的框架。
- MapReduce:用于并行计算处理大型数据集,是一种计算框架。
- Ambari:用于配置,管理和监控Hadoop集群。提供用于查看群集运行状况的仪表板,可视化查看MapReduce,Pig和Hive应用程序,以及以用户友好的方式诊断其性能特征的功能。
- Avro:数据序列化系统。
- Cassandra:可扩展的多主数据库,没有单点故障。
- HBase:可扩展的分布式数据库,支持大型表的结构化数据存储。
- Hive:数据仓库基础架构,提供数据汇总和查询。
- Pig:用于并行计算的高级数据流语言和执行框架。
- Spark:用于数据的快速通用计算引擎。Spark提供一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。
伪分布式模型
说明
单台服务器上运行多个进程(角色). 一般学习Hadoop时常用这种模式.
- 角色
- NameNode – 掌控全局
- SecondaryNameNode – 持久化
- DataNode – 存储数据
集群规划
搭建步骤
- 完成下文中提到的准备环境, 只需一台虚拟机;
- 具体搭建流程, 点击查看
完全分布式模式
说明
工作中应该使用的模式, 不同角色运行在不同的服务器上.
- 角色
- NameNode
- SecondaryNameNode
- DataNode * 3 (两个副本)
集群规划
搭建步骤
- 完成下文中提到的准备环境, 需四台虚拟机;
- 具体搭建流程, 点击查看
高可用(HighAvailable)模式
说明
虽然完全分布式是在实际工作中使用的模式, 但它并不是可靠的. 原因很简单, 就是集群会发生单点故障, 如果namenode节点故障, 挂掉后, 那么这么集群就不可用, 不能被外部访问. 因此, 一般都会对集群做HA.
- 角色
- NameNode(active)
- NameNode(standby)
- DataNode
- Zookeeper(ZK)
- JournalNode(JNN)
- ZookeeperFailoverController(ZKFC)
集群规划
搭建步骤
- 完成下文中提到的准备环境, 需四台虚拟机;
- 具体搭建流程, 点击查看
搭建前准备的环境
本地机环境
准备安装包
- JDK-1.8
- hadoop-2.6.5
- zookeeper-3.4.10
- 版本可不同, 网上找就可以了, 都是开源的.
虚拟机工具
- VMware – 用于在本地机上安装虚拟机.
- 虚拟机使用centos6.5的镜像.
连接工具
连接工具有很多, 推荐使用XShell, 也可使用其他的, 因人而异.
上传工具
上传工具也有很多, 推荐Xftp和fileZilla.
CentOS虚拟机环境
除伪分布式用到一个节点外, 其余两种模式我们都是使用的四节点, 给它们命名为node01, node02, node03, node04.(命名可任意)
首先, 需要先创建node01节点, 创建过程即在虚拟机中安装CentOS, 不会的可自行必应. 其余三个节点等我们配好一些通用配置后, 用VMware自带的克隆功能来生成即可.
静态IP配置
cd /etc/sysconfig/network-scripts/ 进入该目录, 找到ifcfg-eth0的文件,用vim打开修改
将ONBOOT=no 改为yes 设置其跟随开机自启动
将BOOTPROTP=dhcp改为static 设置ip的获取由随机改为固定
再在之后加上一下内容
IPADDR=192.168.75.133 手动设置的固定ip
PREFIX=24
GATEWAY=192.168.75.2 网关ip. 打开VMware的虚拟网络编辑器, 选中nat模式查看nat设置中会有
DNS1=8.8.8.8 设置dns
service network restart 保存退出后, 重启网络服务
注意 : 添加修改时, 不要加上说明用的中文
网络设置好之后, 就可以在本地机中用XShell远程连接虚拟机了. 怎么连接自行bing, 我们对虚拟机的操作通常是在连接工具上操作.
时间同步配置
节点安装ntp命令 yum install ntp -y
上网查找最新的时间服务器ntp1.aliyun.com, 可选择其他家的
同步时间 ntpdate ntp1.aliyun.com
JDK环境配置
使用上传工具将jdk和hadoop的包传到虚拟机中, 这里笔者将jdk传到/usr/local目录中, 将hadoop传到/opt/software/hadoop目录中, 路径因个人配置而异, 要记得自己存放的位置, 后文会对这些路径进行配置, 到时需修改为与个人配置相关的路径, 后续内容不再重复此点.
进入jdk存放的位置 cd /usr/local
解压安装包 tar -zxf jdk-8u181-linux-x64.tar.gz
给解压出来的文件设置权限 chmod -R 777 jdk1.8.0_181
配置java环境变量 vim /etc/profile
在文件最后插入
export JAVA_HOME=/usr/local/jdk1.8.0_181
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
让修改的文件生效 source /etc/profile
控制台输入java -version 来查看jdk是否生效.如果提示java版本则表明成功
虚拟机clone && 主机名配置
vmware中克隆节点
克隆三个节点完成以后, 此时克隆的三个节点的主机名, 静态ip地址, 网卡物理地址与第一个一致, 先修改一下它们:
先设置节点网卡
vim /etc/udev/rules.d/70-persistent-net.rules
打开之后, 会有两个网卡的信息
其中, eth0 是克隆的node01节点的信息, 所以这里我们要删除这一行, 然后把eth1改为eth0, 同时复制ATTR(address)中的内容, 即克隆出来的虚拟机网卡的物理地址.
然后配置ip, 分别在每一个节点上执行
vim /etc/sysconfig/network-script/network
将HWADDR修改为刚才复制的内容
再修改IPADDR的Ip地址, 只需该最后三位即可, 保证每个节点的Ip不同
在修改主机名
vim /etc/sysconfig/network
将NETWORKING设置为yes 打开网络
将HOSTNAME分别设为node02, node03, node04
重启后生效
节点位置配置
为了让节点之间能够互相访问到, 需要对每个节点的位置进行配置
vim /etc/hosts 打开hosts文件
在四个节点中同时加入下列内容
192.168.75.133 node01
192.168.75.134 node02
192.168.75.135 node03
192.168.75.136 node04
其中ip 为各位自己配置的ip
免密登录配置
所有节点执行 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 生成公钥和私钥
根据模式的不同, 将公钥加入节点的方式不同:
- 伪分布式: node01节点要访问它自己, 因此要在node01节点自己的白名单里加入它自己.
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
- 完全分布式: node01节点需要执行包括自己的四个节点的进程, 因此需要在每个节点的白名单中都加入node01.
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04
- 高可用: 除了node01执行四个节点的进程以外, node02会执行node01的进程, 因此还需要在node01节点上再加入node02.
node01 节点上执行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04
node02节点上执行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
注:所有存储的公钥信息均可在 ~/.ssh/authorized_keys文件中查看
防火墙配置
关闭所有节点的防火墙
service iptables stop
永久关闭
chkconfig iptables off
这么配下来, 大部分配置文件需要source命令使其生效, 建议重启虚拟机.