设为首页 加入收藏

TOP

大数据(三) --HDFS搭建的三种模式
2019-01-03 12:19:09 】 浏览:52
Tags:数据 --HDFS 搭建 模式
版权声明:本文版权归宋坤所有,转载请注明出处 https://blog.csdn.net/skisqibao/article/details/83011509

搭建前说明


在集群中, 一台服务器在集群中扮演的角色, 由该服务器上启动的进程决定. 即角色 = 进程.


Hadoop软件库是一个开源框架, 可使用编程模式跨计算机集群分布式的存储和处理大型数据集. 它从单个服务器扩展到数千台服务器, 每一台都提供本地计算和存储. 库本身不依靠硬件来提供高可用服务, 而是通过架构设计来检测和处理程序的故障, 从而在集群上提供高可用服务.
Hadoop生态圈包含的模块:
  • HDFS:分布式文件系统,提供高可靠、高可用、可扩展以及对应用程序数据的高吞吐量访问。
  • Zookeeper:用于分布式应用程序的高性能协调服务。
  • Yarn:作业调度和资源管理的框架。
  • MapReduce:用于并行计算处理大型数据集,是一种计算框架。
  • Ambari:用于配置,管理和监控Hadoop集群。提供用于查看群集运行状况的仪表板,可视化查看MapReduce,Pig和Hive应用程序,以及以用户友好的方式诊断其性能特征的功能。
  • Avro:数据序列化系统。
  • Cassandra:可扩展的多主数据库,没有单点故障。
  • HBase:可扩展的分布式数据库,支持大型表的结构化数据存储。
  • Hive:数据仓库基础架构,提供数据汇总和查询。
  • Pig:用于并行计算的高级数据流语言和执行框架。
  • Spark:用于数据的快速通用计算引擎。Spark提供一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。

伪分布式模型

说明

单台服务器上运行多个进程(角色). 一般学习Hadoop时常用这种模式.

  • 角色
    • NameNode – 掌控全局
    • SecondaryNameNode – 持久化
    • DataNode – 存储数据

集群规划

在这里插入图片描述

搭建步骤

  1. 完成下文中提到的准备环境, 只需一台虚拟机;
  2. 具体搭建流程, 点击查看

完全分布式模式

说明

工作中应该使用的模式, 不同角色运行在不同的服务器上.

  • 角色
    • NameNode
    • SecondaryNameNode
    • DataNode * 3 (两个副本)

集群规划

在这里插入图片描述

搭建步骤

  1. 完成下文中提到的准备环境, 需四台虚拟机;
  2. 具体搭建流程, 点击查看

高可用(HighAvailable)模式

说明

虽然完全分布式是在实际工作中使用的模式, 但它并不是可靠的. 原因很简单, 就是集群会发生单点故障, 如果namenode节点故障, 挂掉后, 那么这么集群就不可用, 不能被外部访问. 因此, 一般都会对集群做HA.

  • 角色
    • NameNode(active)
    • NameNode(standby)
    • DataNode
    • Zookeeper(ZK)
    • JournalNode(JNN)
    • ZookeeperFailoverController(ZKFC)

集群规划

在这里插入图片描述

搭建步骤

  1. 完成下文中提到的准备环境, 需四台虚拟机;
  2. 具体搭建流程, 点击查看

搭建前准备的环境

本地机环境

准备安装包

  • 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/ifcfg-eth0

将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命令使其生效, 建议重启虚拟机.

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【shell】用shell将hdfs上文件夹.. 下一篇大数据日志分析系统-hdfs日志存储

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目