一、hadoop集群安装模式
 
单机模式
直接解压,无需任何配置。主要用于测试代码。没有分布式文件系统。
 
伪分布式
完全分布式的一种形式,只是所有的进程都配置要一个节点上。有分布式文件系统,只不过是这个文件系统只有一个节点。
 
完全分布式
包含主节点和从节点,主节点namenode只有一个(一般来说,真实生产环境中namenode只会单独作为一个节点)namenode主要负责存储元数据,即datanode存储数据的描述,如数据存储在datanode的哪一个节点上,数据是谁上传的。datanode负责真正干活的,负责数据存储的。完全分布式中,如果namenode宕机了会造成整个集群无法使用,这也是完全分布式的一大缺点,存在单点故障问题。所以在一般生产环境中不太使用这种模式。
高可用集群
集群可以持续对外提供服务,做到7*24小时不间断,依赖于zookeeper。完全分布式的架构模式为一主多从,高可用集群架构为多主多从,也就是说高可用集群至少有两个namenode,但是同一时间只有一个是活跃的。我们把这个活跃的namenode称为active,其它的属于热备份状态,这们把这个namenode称之为standby,并且存储的元数据与active是一模一样的,当active宕机的时候,standby会立马切换为active。如果刚才宕机的namenode又恢复正常了,但是这个namenode只能是standby。但是这个集群也存在一个缺陷,就是在同一时间内只能有一个活跃的namenode。如果节点非常多(即元数据过多),这个活跃的namenode很容易崩溃。
联邦机制
同一个集群中可以有多个namenode,并且同一时间可以有多个活跃的namenode,这些namenode 共同使用集群中所有的datanode,每个namenode只负责管理集群中datanode上的一部分数据。但是联邦机制也会存在单点故障问题,如某一个活跃的namenode宕机了,会造成存在此namenode的数据无法访问,因此,一般的来说实际应用使用“联邦+高可用”模式搭建集群。

二、完全分布式的安装步骤

1.集群规划

主机名 IP HDFS yarn
hadoop01  192.168.220.141 namenode
datanode
nodeManager
hadoop02 192.168.220.142 secondarynamenode
datanode
nodeManager
hadoop03 192.168.220.143 datanode resourceManager
nodeManager

2.修改hostname 及 hosts

$ vim /etc/hostname
$ vim /etc/hosts

  

所有的主机hosts文件均配置

192.168.220.141    hadoop01
192.168.220.142    hadoop02
192.168.220.143    hadoop03

配置完成后重启

$ reboot

3.设置 SSH key

$ ssh-keygen -t rsa

一直按回车即可

4.将公钥信息保存至授权认证中

将公钥信息保存至授权认证中 authorized_keys,以后可以进行免登录处理

$ cd .ssh
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  

5.登录测试

$ ssh root@hadoop02

使用hadoop01分别登录hadoop02和hadoop03测试,是否能免密登录。然后通过hadoop02登录hadoop01和hadoop03,是否也能免密登录,以此类推。

6.文件配置

一共需要配置主要的6个文件:
  hadoop-x.x.x/etc/hadoop/hadoop-env.sh
  hadoop-x.x.x/etc/hadoop/yarn-env.sh
  hadoop-x.x.x/etc/hadoop/core-site.xml
  hadoop-x.x.x/etc/hadoop/yarn-site.xml         相关的job处理
  hadoop-x.x.x/etc/hadoop/hdfs-site.xml         可以确定文件的备份个数及数据文件夹的路径
  hadoop-x.x.x/etc/hadoop/mapred-site.xml

1)配置 core-site.xml 
添加tmp目录 
[root@hadoopm ~]# mkdir hadoop_tmp

<configuration>
<!-- 指定namenode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!-- 用来指定使用hadoop时产生文件的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop</value>
</property>
</configuration

fs.defaultFS:HDFS的URI,文件系统://namenode标识:端口号
hadoop.tmp.dir:namenode上本地的hadoop临时文件夹
注:hadoop.tmp.dir 如果路径配置为 hadoop-x.x.x/tmp ,一但重新启动,所以的信息hadoop环境全部失效

2)配置 hdfs-site.xml 
[root@hadoopm tmp]# mkdir dfs dfs/name dfs/data

如果hadoop出现问题,这些文件需要彻底清除掉,并重新配置

<configuration>
<!-- 指定hdfs保存数据的副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 指定hdfs中namenode的存储位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/name</value>
</property>
<!--指定hdfs中datanode的存储位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop02:50070</value>
</property>
</configuration>

3)配置yarn-site.xml

<configuration>
<!-- nomenodeManager获取数据的方式是shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定Yarn的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop03:50090</value>
</property>
</configuration>

4)配置mapred-site.xml

<configuration>
<!-- 告诉hadoop以后MR(Map/Reduce)运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

5)配置slaves
hadoop01 
hadoop02 
hadoop03

远程发送或者每一个节点都配置一次

创建目录 
/home/hadoop/data
/home/hadoop/name

7.集群配置

1)在/usr/local/hadoop-2.7.7/etc/hadoop 目录下创建一个masters文件,配置主机名称,即内容为hadoopm

$ cd /usr/local/hadoop-2.7.7/etc/hadoop/
$ echo hadoopm > masters

  

2)修改从节点文件 slaves,配置主机名称,即内容为hadoopm
$ echo hadoopm > slaves

  

8.格式化文件系统

$ hdfs namenode -format

出现如下信息表示格式化成功

9.启动hadoop

1)启动hdfs,在任意节点上启动均可

$ start-dfs.sh

2)启动yarn,在yarn的主节点上启动

$ start-yarn.sh

  

10.查看进程

$ jps

  

11.测试HDSF是否能正常使用

三、安装过程中可能遇到的问题

启动过程中某些进程启动不了
 
正常情况下有5个进程:
namenode
secondarynamenode
datanode
nodemanager
resourcemanager
 
解决方式一:
全部关闭集群重新启动
执行 stop-dfs.sh  命令,可以在任意节点上执行。
执行 stop-yarn.sh 命令,在yarn的节点上执行。
执行 start-dfs.sh 命令
执行 start-yarn.sh 命令
 
解决方式二:
单独启动某些未启动的进程
单独启动hdfs相关进程,可以通过执行 hadoop-daemon.sh start 进程 命令来启动
单独启动yarn相关进程,可以通过执行 yarn-daemon.sh start 进程 命令来启动
 

$ cd /usr/local/hadoop-2.7.7/
$ cd /sbin
$ hadoop-daemon.sh start namenode
$ hadoop-daemon.sh start datanode
$ yarn-daemon.sh start nodemanager
$ yarn-daemon.sh start resourcemanager

重新格式化datanode启动不了

如果想要重新格式化,则需要先删除data目录。

$ rm -rf /home/hadoop/data
$ hadoop namenode -format

  

CentOS7 Hadoop 安装(完全分布式)的更多相关文章

  1. hadoop安装教程,分布式配置 CentOS7 Hadoop3.1.2

    安装前的准备 1. 准备4台机器.或虚拟机 4台机器的名称和IP对应如下 master:192.168.199.128 slave1:192.168.199.129 slave2:192.168.19 ...

  2. 避坑之Hadoop安装伪分布式(Hadoop3.2.0/Ubuntu14.04 64位)

    一.安装JDK环境(这个可以网上随意搜一篇教程了照着弄,这里不赘述) 安装成功之后 输入 输入:java -version 显示如下说明jdk安装成功(我这里是安装JDK8) 二.安装Hadoop3. ...

  3. CentOS7上安装伪分布式Hadoop

    1.下载安装包 下载hadoop安装包 官网地址:https://hadoop.apache.org/releases.html 版本:建议使用hadoop-2.7.3.tar.gz 系统环境:Cen ...

  4. Hadoop安装教程_分布式

    Hadoop的分布式安装 hadoop安装伪分布式以后就可以进行启动和停止操作了. 首先需要格式化HDFS分布式文件系统.hadoop namenode -format 然后就可以启动了.start- ...

  5. CentOS7 Hive 安装

    hive的安装模式有2种,一种是使用自带的derby数据库,另一种是使用mysql作为元数据库.derby方式一般没人用,因为它是单用户模式.这里主要讲解mysql方式. hive仅仅是一个客户端工具 ...

  6. hadoop搭建伪分布式集群(centos7+hadoop-3.1.0/2.7.7)

    目录: Hadoop三种安装模式 搭建伪分布式集群准备条件 第一部分 安装前部署 1.查看虚拟机版本2.查看IP地址3.修改主机名为hadoop4.修改 /etc/hosts5.关闭防火墙6.关闭SE ...

  7. centos7+hadoop完全分布式集群搭建

    Hadoop集群部署,就是以Cluster mode方式进行部署.本文是基于JDK1.7.0_79,hadoop2.7.5.  1.Hadoop的节点构成如下: HDFS daemon:  NameN ...

  8. Centos7.5安装分布式Hadoop2.6.0+Hbase+Hive(CDH5.14.2离线安装tar包)

    Tags: Hadoop Centos7.5安装分布式Hadoop2.6.0+Hbase+Hive(CDH5.14.2离线安装tar包) Centos7.5安装分布式Hadoop2.6.0+Hbase ...

  9. 转载:Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

    原文 http://www.powerxing.com/install-hadoop/ 当开始着手实践 Hadoop 时,安装 Hadoop 往往会成为新手的一道门槛.尽管安装其实很简单,书上有写到, ...

随机推荐

  1. python 错误、调试、单元测试、文档测试

    错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入.从网络爬取东西的时候,网络断了.这类错误称为异常 错误处理 参考链接:https:// ...

  2. NIO你真正了解多少?

    解释一下java.io.Serializable接口 类通过实现 Java.io.Serializable 接口以启用其序列化功能.未实现此接口的类将无法使其任何状态序列化或反序列化. IO操作最佳实 ...

  3. python time包中的time.time()和time.clock()的区别

    在统计python代码 执行速度时要使用到time包,在查找相关函数时有time.time()和time.clock()两个函数可供选择.而两者是有区别的: cpu 的运行机制:cpu是多任务的,例如 ...

  4. Python【day 13】内置函数01

    1.python3.6.2 一共有 68个内置函数2.分成6个大类 1.反射相关-4个 2.面向对象相关-9个 3.作用域相关--2个 1.globlas() #注意:最后是s,复数形式 查看全局作用 ...

  5. oracle 主键生成策略-sequence序列+trigger触发器

    oracle中设置表的主键字段为自增序列(实例)1.首先创建一个表(如日志表) //删除库表中存在的日志表drop table S_LOG_INFO cascade constraints;//新建日 ...

  6. 章节十一、6-操作集合里面的Web元素

    以下演示操作以该网站为例:https://learn.letskodeit.com/p/practice 一.如何操作多个元素(把多个元素放到集合容器中然后操作它们) 列如我们需要操作这些单选框:: ...

  7. java 反射基本认识

    java 反射基本认识 最近重新复习java反射的知识,有了新的理解. class类? 在面向对象中,万事万物皆对象.类也是个对象,是java.lang.class类的实例对象. public cla ...

  8. Mysql Join-连接查询(上)

    认识 多表连接查询,我感觉应该是关系型数据库最能体现其价值和灵活性的地方吧. 我觉得数据库的作用, 归纳起来无非就是存储和查询. 一言蔽之,数据库就是能灵活地存储和查询数据. 存储上, 也是以文件的方 ...

  9. C语言的常量

    #include<stdio.h> int main(void) { ; //定义一个常量,不能被修改,可以赋初值:常量的标识符建议使用大写字母 ; //初始化 printf(" ...

  10. ansible 软件相关模块,剧本

    软件相关模块 yum rpm和yum的区别 rpm:redhat package manager yum 可以解决依赖关系 yum 源配置 使用yum下载时需要先下载epel [epel] name= ...