搭载Hadoop2.0高可用集群

  • 说明
  • 准备
    • 下载好所需要的文件
    • 目录准备
    • 虚拟机网络配置(可能会在其他文章中讲到)
    • 文件的安装
    • 配置环境变量
    • 环境变量的验证
    • 关闭防火墙
  • 配置Hadoop高可用集群
    • 修改hadoop-env.sh
    • 修改core-site.xm文件
    • 修改hdfs-site.xml文件
    • 修改mapred-site.xml文件
    • 修改yarn-site.xml文件
    • 修改slaves文件
  • Zookeeper分布式集群部署
    • 修改myid文件
    • 修改zoo.cfg文件
  • 分发配置文件
  • 启动Hadoop高可用集群
    • 查看集群是否启动

说明

 主要是记录自己学习Hadoop的过程,梳理自己的思路,可能也会帮助正在配置Hadoop环境同学。

准备

下载好所需要的文件

首先安装好三台虚拟机比如我的命名为node-01、node-02、node-03,并且已经完成了jdk、Hadoop、zookeeper文件的下载(我自己使用的是*vmworkstation、centos6.7、 jdk-8u161、hadoop-2.7.4、Zookeeper-3.4.10)
  附上文件链接

链接:https://pan.baidu.com/s/18eEnbsU5Eyl7UcqI-VXlRA
提取码:fzlt

目录准备

 为了规范Hadoop集群的配置文件,防止我们产生混淆,我们在根目录下创建几个文件用于存储文件(命名可以自己选择,自己分清就行)

/export/data/ 用与存储数据类
/export/servers/ 用于存储服务类软件
/export/software/ 用于存放安装包文件

虚拟机网络配置(可能会在其他文章中讲到)

  1、主机名与ip映射配置
  2、网络参数配置

文件的安装

  这里我使用的是SecureCRT远程连接工具,连接到node-01、node-02、node-03虚拟机(进行ssh服务配置之后可以避免主节点对其他节点访问时频繁输入代码)
  在secureCRT中有好几种上传文件到虚拟机的方法,比如sftp上传以及rz命令(rz命令使用yum install rz -y安装,但由于Centos6停止维护因此无法使用yum源,我们需要重新安装yum源,可以参考其他博主的文章进行安装)
1、安装包的上传(我们只在node-01上操作就可以)
  ①cd /export/software先进到这个目录下上传安装包
  ②如果使用rz命令的话可以直接输入rz会弹出如下窗口,然后选择刚才下载的jdk、Hadoop、zookeeper所在的目录进行上传就可以。
 ③使用sftp上传时,点击CRT菜单栏中的选项,点击会话选项,选择X/Y/Zomdem,可以切换到Windows中下载三个安装包的目录中。按住alt+p,会在CRT中弹出一个新的会话,然后使用cd /export/software去切换到我们要上传到Linux的文件目录中,使用pwd可以查看所在Linux目录位置,使用lpwd可以查看Windows所在目录位置,之后使用put jdk-8u161-linux-x64.tar.gz命令将Windows中下载的安装包上传到Linux中 /export/software/ ,其他两个安装包类似方法上传。

注意
在安装jdk之前应该先使用rpm -qa|grep java检查系统中是否有其他jdk如果有,就全部删除之后在进行jdk的安装
使用rpm -e --nodeps [jdk的名称]
切记切记把显示的所有jdk全部卸载!!!否则安装不了自己需要的jdk!!!

 ④上传成功后,在Linux中将安装包进行解压到node-01中,进入到/export/servers/目录下,使用如下命令

tar -zxvf jdk-8u161-linux-x64.tar.gz -C /export/servers/
tar -zxvf hadoop-2.7.4.tar.gz -C /export/servers
tar -zxvf zookeeper-3.4.10.tar.gz -C /export/servers/

 ⑤如果感觉解压名过长可以进入到cd /export/servers/ 目录中使用mv命令进行重命名
比如
 mv jdk1.8.0_161/ jdk

配置环境变量

  进入到 /etc目录下使用vi编辑器编辑profile来编辑环境变量
vi /etc/prifile

export JAVA_HOME=/export/servers/jdk    配置jdk系统的环境变量
export HADOOP_HOME=/export/servers/hadoop-2.7.4   配置hadoop的环境变量
export ZK_HOME=/export/servers/zookeeper-3.4.10   配置zookeeper的环境变量
export CLASSPATH=.:$JAVA_HOME/lib/da.jar:$JAVA_HOME/lib/tools.jar
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin: $ ZK_HOME/bin:$PATH

环境变量的验证

  使用source /etc/profile指令使配置文件生效
查看我们的版本号
 java -version
 hadoop version
显示结果如下图表示配置正确

关闭防火墙

  因为我们使用的是vmware的虚拟机,是通过系统的内网创建的,关闭防火墙并没有什么安全隐患,而且会避免出现一些问题(具体原因可以自己查一下)
  service iptables stop(三台虚拟机都需要关闭)

配置Hadoop高可用集群

修改hadoop-env.sh

 由于Hadoop是Java进程所以需要添加jdk,配置hadoop-env.sh文件是设置Hadoop运行时需要的JDK环境变量,我们先进入到主节点node-01解压包下的==/etc/hadoop/==目录下
 cd /export/servers/hadoop-2.7.4/etc/hadoop/
 export JAVA_HOME=/export/servers/jdk

修改core-site.xm文件

 该文件是Hadoop的核心配置文件,同样是在*/export/servers/hadoop-2.7.4/etc/hadoop/*目录下
 vi core-site.xml

<configuration><!-- 指定hdfs的nameservice为ns1 --><property><name>fs.defaultFS</name><value>hdfs://ns1</value></property><!-- 指定hadoop临时目录 --><property><name>hadoop.tmp.dir</name><value>/export/servers/hadoop-2.7.4/tmp</value></property><!-- 指定zookeeper地址 --><property><name>ha.zookeeper.quorum</name><value>node-01:2181,node-02:2181,node-03:2181</value></property>
</configuration>

修改hdfs-site.xml文件

<configuration><!-- 设置副本个数 --><property> <name>dfs.replication</name><value>2</value></property> <!-- 设置namenode.name目录 --><property>    <name>dfs.namenode.name.dir</name>    <value>file:/export/data/hadoop/name</value>    </property>  <!-- 设置namenode.data目录 --><property>    <name>dfs.datanode.data.dir</name>    <value>file:/export/data/hadoop/data</value>    </property>  <!-- 开启webHDFS --><property> <name>dfs.webhdfs.enabled</name>  <value>true</value>  <!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 --> </property><!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>ns1</value></property><!-- ns1下面有两个NameNode,分别是nn1,nn2 --><property><name>dfs.ha.namenodes.ns1</name><value>nn1,nn2</value></property><!-- nn1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns1.nn1</name><value>node-01:9000</value></property><!-- nn1的http通信地址 --><property><name>dfs.namenode.http-address.ns1.nn1</name><value>node-01:50070</value></property><!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns1.nn2</name><value>node-02:9000</value></property><!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.ns1.nn2</name><value>node-02:50070</value></property><!-- 指定NameNode的元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>
qjournal://node-01:8485;node-02:8485;node-03:8485/ns1</value></property><!-- 指定JournalNode在本地磁盘存放数据的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/export/data/hadoop/journaldata</value></property><!-- 开启NameNode失败自动切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置失败自动切换实现方式 --><property><name>dfs.client.failover.proxy.provider.ns1</name><value>
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value></property><!-- 使用sshfence隔离机制时需要ssh免登陆 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 配置sshfence隔离机制超时时间 --><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property>
</configuration>

修改mapred-site.xml文件

 在目录默认没有mapred-site.xml文件但是有mapred-site.xml.template文件,因此我们需要使用cp命令复制文件并重命名为mapred-site.xml。
 cp mapred-site.xml.template mapred-site.xml

<configuration>
<!-- 指定MapReduce运行时框架,这里指定在Yarn上,默认是local --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

修改yarn-site.xml文件

<configuration>
<!-- Site specific YARN configuration properties --><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value></property><property><name>yarn.scheduler.maximum-allocation-mb</name><value>2048</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>1</value></property><!-- 开启RM高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster id --><property><name>yarn.resourcemanager.cluster-id</name><value>yrc</value></property><!-- 指定RM的名字 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 分别指定RM的地址 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>node-01</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>node-02</value></property><!-- 指定zk集群地址 --><property><name>yarn.resourcemanager.zk-address</name><value>node-01:2181,node-02:2181,node-03:2181</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>

修改slaves文件

 注意在Hadoop3.0以后slaves更名为workers了(我们配置的是Hadoop2.0),该文件是用来记录Hadoop集群所有slaves的节点名称或者是ip,每行存放一个,在配置完SSH免密登陆后,还可以用来一键启动集群所有从节点。
 使用vi slaves后删除里面的默认localhost,添加

node-01
node-02
node-03

注意:我们在三台机器上搭载了Hadoop集群,同时在hdfs-site.xml指定了副本数量为3

Zookeeper分布式集群部署

修改myid文件

 这是我们的zookeeper集群的参数文件,参数越大,在FastLeaderElection选举leader时所占权重越大,这里我设置node-01、node-02、node-03的参数分别为1、2、3。
 首先进入到该目录cd /export/data/zookeeper/zkdata,使用echo添加信息到myid,注意在>后面有一个空格,不要出错,echo会覆盖文件中原信息。

echo 1 > myid

 使用cat命令可以查看文件内容cat myid

修改zoo.cfg文件

 我们的zookeeper同样解压到了/export/servers目录下,我们进入到Zookeeper解压目录下,找到conf目录
 cd /export/servers/zookeeper-3.4.10/conf
 在该目录同样默认没有zoo.cfg,我们需要复制zoo_sample.cfg文件并重命名为zoo.cfg
 cp zoo_sample.cfg zoo.cfg
 vi zoo.cfg
修改的内容

#该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息
dataDir=/export/data/zookeeper/zkdata
#server.后面的是myid赋予每台机器的选举权重
#node-01...是机器的名(ip和机器名映射)
#2888,3888分别是内部默认的通信端口和选举端口
#将下面三行添加到zoo.cfg最下面
server.1=node-01:2888:3888
server.2=node-02:2888:3888
server.3=node-03:2888:3888

分发配置文件

 1、使用scp-r命令递归复制整个export目录到node-02、node-03的根目录下,并将环境变量都分别分发到node-02、node-03

scp -r /export/ node-02:/
scp -r /export/ node-03:/
scp /etc/profile node-02:/etc/profile
scp /etc/profile node-03:/etc/profile

分发完成之后分别在node-02、node-03输入source /etc/profile重新加载环境变量

注意:在使用scp命令分发时,不会覆盖原文件,所以当我们得配置出现错误使,但是已经分发完成了,我们需要进入到虚拟机得目录中,将文件删除掉,然后将配置成功的文件重新进行分发。

 2、起初我们在配置myid文件中,给node-01设置的参数为1,然后使用了scp命令将目录分发到了node-02、node-03,因此我们需要修改一下node-02、node-03的myid中的参数值。
在两台机器中执行下面命令:

cd /export/data/zookeeper/zkdata/
在node-02中
echo 2 >myid
cat myid
node-03中
echo 3 >myid
cat myid

启动Hadoop高可用集群

1、首先启动集群各个节点的Zookeeper服务
 zkServer.sh start

2、启动集群各个节点监控NameNode的管理日志JournalNode
 hadoop-daemon.sh start journalnode

3、在node-01节点格式化NameNode,并将格式化后的目录复制到node-02中,格式化只能在最开始配置时格式化,如果二次格式化,因为在目录dfs.name.dir已经存在了上次产生的文件,因此会使得集群不同步,如果必须进行格式化,应先把日志文件全部删除,包括zookeeper。
 hadoop namenode -format
 scp -r /export/data/hadoop node-02:/export/data

4、在node-01节点上格式化zkfc(注意事项与上面类似)
 hdfs zkfc -formatZK

5、启动dfs、yarn集群
 start-dfs.sh
 start-yarn.sh

查看集群是否启动

 使用jps命令可以查看进程,出现如图所示,集群配置完成。

特别说明:我们可以通过分别启动然后使用jps命令查看进程是否已经开启,如果某个进程并没有开启成功,我们就需要对没有配置好的文件进行修改,建议不要一看出错了就重装虚拟机,因为可能还会出错 !

Hadoop2.0高可用集群搭建【保姆级教程】相关推荐

  1. Hadoop搭建高可用集群(保姆级教程)

    准备工作: 1.搭建完成zookeeper,如果没有搭建,请跳转到zookeeper集群搭建保姆级教程 2.集群的jdk都安装完成,如果没有,请跳转到linux编写个脚本快速搭建jdk保姆级教程 3. ...

  2. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard

    安装k8s集群管理UI 1 Dashboard安装 1.1 参考文档 Dashboard 是基于网页的 Kubernetes 用户界面. 你可以使用 Dashboard 将容器应用部署到 Kubern ...

  3. 从0开始搭建Hadoop2.x高可用集群(HDFS篇)

    从0开始搭建Hadoop2.x高可用集群(HDFS篇) 演示目标 演示环境 注意事项 准备虚拟机 关闭防火墙 检查系统时间 修改host 设置免密登录 卸载OpenJDK 安装软件 准备HDFS 配置 ...

  4. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  5. Hadoop HA 高可用集群搭建

    Hadoop HA 高可用集群搭建 一.首先配置集群信息 1 vi /etc/hosts 二.安装zookeeper 1.解压至/usr/hadoop/下 1 tar -zxvf zookeeper- ...

  6. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    一.服务器环境 主机名 IP 用户名 密码 安装目录 master 192.168.142.124 root xxx /usr/hadoop-2.6.5/ slave1 192.168.142.125 ...

  7. mycat mysql好可用架构_想要学会MyCat高可用集群搭建,但是这些知识点却还玩不明白?...

    一.集群架构 1.MyCat实现读写分离架构 在我前面的文章, 我已经讲解过了通过MyCat来实现MySQL的读写分离, 从而完成MySQL集群的负载均衡 , 如下面的结构图: 但是以上架构存在问题 ...

  8. RabbitMQ高级指南:从配置、使用到高可用集群搭建

    本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...

  9. RabbitMQ 高级指南:从配置、使用到高可用集群搭建

    博主说:在项目中,通过 RabbitMQ,咱们可以将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 正文 1 Rab ...

最新文章

  1. (六) Docker 容器命令
  2. optee的启动过程
  3. 2.3.1 spring属性注入-注解注入-半注解方式-前序
  4. mysql 数据库 导入兼容_mysql数据库的导入和导出
  5. 2019牛客暑期多校训练营(第七场)D Number(思维)
  6. win10系统要求配置_酒店智能化集成系统设计要素、系统功能要求和配置标准
  7. IDEA配置Struts框架
  8. 前端:常用单词(专业版)
  9. js便签笔记(3)——切记:appendChild()、insertBefore()是移动element节点!
  10. Mac安装jadx查看dex文件
  11. 讯飞 tts 9.0 app_讯飞B1录音笔,到底值不值得买?
  12. 【智能优化算法-蝙蝠算法】基于混合粒子群和蝙蝠算法求解单目标优化问题附matlab代码
  13. CSDN很火的汤小洋老师全部课程总共有哪些(问号问号问号)
  14. 《高等数学B(一)》笔记
  15. 数据结构——学期总结
  16. 计算机管理器里的WiFi不见了,电脑wifi图标不见了也连不上网
  17. 广告业务系统 之 辅助决策 —— “ AB 实验平台”
  18. java .net webservice_Java客户端调用.NET的WebService实例
  19. git 新入职员工流程
  20. ApiPost使用时的一些坑

热门文章

  1. 中心商务区建智慧城市 将现 “芝加哥夜景”
  2. 用python制作weblogo/SeqLogo/序列保守性分析图
  3. 二维码 扫描框的 处理 美化功能 喜欢的 自己直接替换和修改
  4. 阿里云建站之模板建站的核心优势有哪些?
  5. 【python】pythonPTA编程练习2
  6. 工程师的浪漫:用机械臂画一个爱心
  7. <博弈论> HDU1846
  8. 小米手机手机远行linux,Ubuntu的Android Studio调试小米手机的方法
  9. Build a project
  10. 国内镜像加速 Android 源码下载