高可用集群搭建

高可用集群搭建 

创建hadoop账户

  1. 创建hadoop账户(#注意,接下来的操作均在hadoop账户下运行

    # useradd hadoop
    # passwd hadoop
    su - hadoop
    mkdir soft disk1 disk2
    mkdir -p disk{1,2}/dfs/{dn,nn}
    mkdir -p disk{1,2}/nodemgr/local

     

  2. 将本地目录下的hadoop-2.6.0-cdh5.5.0.tar.gz,上传到虚拟机的/home/hadoop/soft目录下,并且更改名字。
    1 tar -xzvf hadoop-2.6.0-cdh5.50
    2 mv hadoop-2.6.0-cdh5.50 hadoop
  3. 配置hadoop的环境变量
    1 vim ~/.bashrc
    2 export HADOOP_HOME=/home/hadoop/soft/hadoop
    3 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    4 source ~/.bashrc
  4. 进入/home/hadoop/soft/hadoop/etc/hadoop修改配置文件
    修改core-site.xml

    修改hdfs-site.xml

    修改mapred-site.xml

    修改yarn-site.xml

    修改环境变量(下面有文字版)

     增加hadoop环境变量
    vim ~/.bashrc

     

  5. 格式化namenode
    hdfs namenode -format
  6. 启动start-all.sh启动全部服务,或者可以分别启动(start-dfs.sh,start-yarn.sh)/(hadoop-daemon.sh)


  7. 启动之后可以通过jps查看当前开启的服务以及netstat -tnlp查询端口信息(或者可以在windows下通过登录xxx:50070和xxx:8088查看)

 

高可用的搭建

  1. 将所有的服务全部关掉。

  2. 开启zookeeper(配置安装请参考zookeeper安装)

  3. 在kslave5,kslave6,kslave7上执行
    cd
    mkdir disk1/dfs/jn
  4. 进入/home/hadoop/soft/hadoop/etc/hadoop修改配置文件

    修改core-site.xml
     1 <configuration>
     2     <property>
          <!-- 1.HDFS的访问入口--> 3 <name>fs.defaultFS</name> 4 <value>hdfs://kcluster</value> 5 </property> 6 <property>
       <!-- 2.zookeeper集群地址--> 7 <name>ha.zookeeper.quorum</name> 8 <value>kslave5:2181,kslave6:2181,kslave7:2181</value> 9 </property> 10 </configuration>
    修改hdfs-site.xml
     1 <configuration>
     2 <property>
     3 <!-- 1.集群复制因子-->
     4 <name>dfs.replication</name>
     5 <value>7</value>
     6 </property>
     7 <property>
     8 <!-- 2.namenode数据存放地址,两个地址是为了安全-->
     9 <name>dfs.namenode.name.dir</name>
    10 <value>file:///home/hadoop/disk1/dfs/nn,file:///home/hadoop/disk2/dfs/nn</value>
    11 </property>
    12 <property>
    13 <!-- 3.datanode是数据块的存放地址,两个地址是为了传输数据的速度 -->
    14 <name>dfs.datanode.data.dir</name>
    15 <value>file:///home/hadoop/disk1/dfs/dn,file:///home/hadoop/disk2/dfs/dn</value>
    16 </property>
    17 <property>
    18 <!-- 4.hdfs临时文件存放目录-->
    19 <name>dfs.tmp.dir</name>
    20 <value>/home/hadoop/disk1/tmp</value>
    21 </property>
    22 <property>
    23 <!-- 5.集群名字-->
    24 <name>dfs.nameservices</name>
    25 <value>kcluster</value>
    26 </property>
    27 <property>
    28 <!-- 6.namenode的列表成员别名-->
    29 <name>dfs.ha.namenodes.kcluster</name>
    30 <value>kma1,kma2</value>
    31 </property>
    32 <property>
    33 <!-- 7.namenode的主机通信地址-->
    34 <name>dfs.namenode.rpc-address.kcluster.kma1</name>
    35 <value>kmaster1:8020</value>
    36 </property>
    37 <property>
    38 <name>dfs.namenode.rpc-address.kcluster.kma2</name>
    39 <value>kmaster2:8020</value>
    40 </property>
    41 <property>
    42 <!-- 8.namenode的主机的http通信地址-->
    43 <name>dfs.namenode.http-address.kcluster.kma1</name>
    44 <value>kmaster1:50070</value>
    45 </property>
    46 <property>
    47 <name>dfs.namenode.http-address.kcluster.kma2</name>
    48 <value>kmaster2:50070</value>
    49 </property>
    50 <property>
    51 <!-- 9.JournalNodes主机列表-->
    52 <name>dfs.namenode.shared.edits.dir</name>
    53 <value>qjournal://kslave5:8485;kslave6:8485;kslave7:8485/kcluster</value>
    54 </property>
    55 <property>
    56 <!-- 10.JournalNodes保存日志和集群操作状态的目录-->
    57 <name>dfs.journalnode.edits.dir</name>
    58 <value>/home/hadoop/disk1/dfs/jn</value>
    59 </property>
    60 <property>
    61 <!-- 11.java 的类名,用来激活namenode-->
    62 <name>dfs.client.failover.proxy.provider.kcluster</name>
    63 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    64 </property>
    65 <property>
    66 <!-- 12.Namenode和Zookeeper用来隔离失效节点的方式-->
    67 <name>dfs.ha.fencing.methods</name>
    68 <value>shell(/bin/true)</value>
    69 </property>
    70 <property>
    71 <!-- 13.是否激活namenode失效自动切换-->
    72 <name>dfs.ha.automatic-failover.enabled</name>
    73 <value>true</value>
    74 </property>
    75 </configuration>
    修改mapred-site.xml
     1 <configuration>
     2 <property>
     3 <!-- 1.分配 mapreduce 框架-->
     4 <name>mapreduce.framework.name</name>
     5 <value>yarn</value>
     6 </property>
     7 <property>
     8 <!-- 2.historyserver 地址-->
     9 <name>mapreduce.jobhistory.address</name>
    10 <value>kmaster1:10020</value>
    11 </property>
    12 <property>
    13 <!-- 3.historyserver Web端口-->
    14 <name>mapreduce.jobhistory.webapps.address</name>
    15 <value>kmaster1:19888</value>
    16 </property>
    17 <property>
    18 <!-- 4.yarn任务的临时输出目录-->
    19 <name>yarn.app.mapreduce.am.staging-dir</name>
    20 <value>/user</value>
    21 </property>
    22 </configuration>
    修改yarn-site.xml
    <configuration>
    <property>
    <!-- 1.开始yarn的高可用-->
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
    </property>
    <property>
    <!-- 2.指定RM的cluster id-->
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yarn-ha</value>
    </property>
    <property>
    <!-- 3.指定开启高可用的RM别名-->
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>krm1,krm2</value>
    </property>
    <property>
    <!-- 4.分别指定RM的地址-->
    <name>yarn.resourcemanager.hostname.krm1</name>
    <value>kmaster1</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.krm2</name>
    <value>kmaster2</value>
    </property>
    <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
    </property>
    <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <property>
    <!-- 5.指定zookeeper的地址-->
    <name>yarn.resourcemanager.zk-address</name>
    <value>kslave5:2181,kslave6:2181,kslave7:2181</value>
    </property>
    <property>
    <!-- 6.为 mapreduce 分配 yarn 服务-->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <!-- 7.nodemanager 本机计算任务的临时文件-->
    <name>yarn.nodemanager.local-dirs</name>
    <value>file:///home/hadoop/disk1/nodemgr/local,file:///home/hadoop/disk2/nodemgr/local</value>
    </property>
    <property>
    <!-- 8.nodemanager 日志输出-->
    <name>yarn.nodemanager.log-dirs</name>
    <value>file:///home/hadoop/disk1/log/hadoop-yarn/containers</value>
    </property>
    <property>
    <!-- 9.远程任务的输出-->
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>file:///home/hadoop/disk1/log/hadoop-yarn/apps</value>
    </property>
    <property>
    <!-- 10.日志汇集-->
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    </property>
    </configuration>
    修改hadoop-env.sh(默认情况下HADOOP_PID_DIR指定位置是/tmp目录,但是/tmp目录每次重启会做定时的更新,所以会不稳定,所以在完全分布式环境下需要进行修改
    1 export JAVA_HOME=/usr/java/default
    2 export HADOOP_PID_DIR=/home/hadoop/disk1/tmp
    修改mapred-env.sh

    1 export MAPRED_PID_DIR=/home/hadoop/disk1/tmp
    修改yarn-env.sh
    1 export YARN_PID_DIR=/home/hadoop/disk1/tmp

     

    配置hadoop环境变量(将接下来集群需要的zookeeper和hbase的环境变量都加好了)
     1 vim ~/.bashrc
     2 export HADOOP_HOME=/home/hadoop/soft/hadoop
     3 export HADOOP_PREFIX=$HADOOP_HOME
     4 export HADOOP_COMMON_HOME=$HADOOP_PREFIX
     5 export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
     6 export HADOOP_HDFS_HOME=$HADOOP_PREFIX
     7 export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
     8 export HADOOP_YARN_HOME=$HADOOP_PREFIX
     9 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    10 export ZOOKEEPER_HOME=/home/hadoop/soft/zk
    11 export PATH=$PATH:$ZOOKEEPER_HOME/bin
    12 export HBASE_HOME=/home/hadoop/soft/hbase
    13 export PATH=$PATH:$HBASE_HOME/bin
     
  5. 开启journalnode(日志服务器)
    1 hadoop-daemon.sh start journalnode

     

  6. 初始化原来的namenode:
    1 # 初始化edits目录
    2 hdfs namenode -initializeSharedEdits
    3 # 重新启动namenode
    4 hadoop-daemon.sh start namenode
    5 # 查看namenode状态
    6 hdfs haadmin -getServiceState kma1

     

  7. 初始化现在的namenode:
    1 hdfs namenode -bootstrapStandby
    2 # 启动第二台 namenode
    3hadoop-daemon.sh start namenode
    4 # 查看状态
    5 hdfs haadmin -getServiceState kma2

     

  8. 格式化zookeeper控制器,选择一台namenode格式操作:
    1 hdfs zkfc -formatZK

     再次查看namenode状态

    hdfs haadmin -getServiceState kma1

      active

    hdfs haadmin -getServiceState kma2

      standby

     查看到一个namenode(active),另一个namenode(standby)。接下来,开启其余节点上的服务,均正常运行。至此,HA集群搭建完毕。



转载于:https://www.cnblogs.com/Try-kevin/p/7868539.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scrt如何切换成英文版_英文版SecureCRT显示乱码解决

英文版SecureCRT显示乱码解决系统环境&#xff1a;CentOS&#xff15;.&#xff16;以前Linux都是默认安装在英文环境下&#xff0c;用英文版的SecureCRT查看系统内容输出的也都是英文的&#xff0c;不会出现乱码问题。今天同事在服务器安装时默认选择了简体中文&#xff0c;这…

java try catch_Java捕获异常

大家好&#xff0c;欢迎来到乐字节小乐的Java技术分享园地在Java中&#xff0c;凡是可能抛出异常的语句&#xff0c;都可以用try ... catch捕获。把可能发生异常的语句放在try { ... }中&#xff0c;然后使用catch捕获对应的Exception及其子类。多catch语句可以使用多个catch语…

多语言持久性:带有MongoDB和Derby的EclipseLink

从现在开始&#xff0c;多语种持久性一直是新闻。 从2011年底开始&#xff0c;在著名的Fowler帖子的推动下&#xff0c;我看到了更多更好的主意。 最新的一个是公司内部的学生项目&#xff0c;我们在其中使用Scala作为后端数据&#xff0c;将数据持久存储到MongoDB&#xff0c;…

web前端开发最佳实践--(笔记之JavaScript最佳实践)

如何避免全局变量污染&#xff1f; 避免定义全局变量或全局函数用一个变量进行封装&#xff0c;并返回外部需要访问的接口如何写出高维护的js代码 配置数据和代码逻辑分离 如&#xff1a; 改成&#xff1a; ---用js模板mustachehandlebarsjsMVC的数据模式 model&#xff1a;数据…

Python入门笔记

Python变量和数据类型 数据类型 print语句 注释 Python的注释以 # 开头&#xff0c;后面的文字直到行尾都算注释 # 这一行全部都是注释... print hello # 这也是注释 什么是变量 定义字符串 字符串可以用或者""括起来表示。 如果字符串本身包含怎么办&#xff1f;比如…

如何保证input的输入值不会随着提交 而变空_如何对web界面的应用进行测试?

一、输入框&#xff1a;1、字符型输入框&#xff1a;&#xff08;1&#xff09;字符型输入框&#xff1a;英文全角、英文半角、数字、空或者空格、特殊字符“~&#xff01;#&#xffe5;%……&*&#xff1f;[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时&…

CentOS6.x下,tomcat - web项目部署

1. 安装tomcat tomcat安装方法&#xff1a;http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 <!-- 使用 80 端口 (也可以使用其它端口)--> <Connector port"80" protocol"HTTP/1.1"connectionTimeout"200…

使用地图触发功能处理相干事件

本文介绍如何通过使用映射触发器来处理一致性事件。 基本上&#xff0c;建议使用Oracle Coherence中的分布式数据管理来研究Oracle Coherence API的基本配置和实现。 映射触发器是Oracle Coherence提供最高度定制的缓存管理系统的最重要功能之一。 MapTrigger代表一个功能代理…

阿里云服务器mysql莫名丢失_mysql数据库丢失

mysql数据库丢失云服务器(Elastic Compute Service&#xff0c;简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源一样便捷、高…

gitlab使用_使用 Docker 部署 Gitlab

GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的web服务&#xff0c;具有wiki和issue跟踪功能。GitLab是当前应用非常广泛的源代码管理系统。1. 安装docker引擎并启动2. 获取gitlab镜像包查看下载好的镜像3. 在…

druid连接池初始化慢_7、SpringBoot -连接池(Durid)

一导入相关核心包<dependencies>二 在application.ymlspring三、配置Druid Datasource(可选)Configuration五、监控访问 http://localhost:8080/druid&#xff0c; 使用上面配置的账号密码。四、自动配置原理源代码Configuration说明DataSourceProperties 配置相关 首先找…

使用工厂方法模式设计最佳实践

在前面的“设计模式”示例中&#xff0c;我们解释了当今常用的“工厂”模式。 在本节中&#xff0c;我们将了解具有更多抽象的更高级的解决方案。 该模式称为工厂方法设计模式。 定义&#xff1a; Factory方法模式提供了一种用于创建对象的方法&#xff0c;但是将对象创建委托…

qt绘制一圈圆_Qt绘制圆

最近开始折腾Qt了&#xff0c;手头上的一个项目需要用到Qt来绘制一些简单图像。记录下Qt绘制圆的过程&#xff1a;对于以A为圆心&#xff0c;半径为R的圆&#xff0c;外部有一个外切的正方形&#xff0c;正方形上有B点。如下图所示&#xff1a;对于void QPainter::drawArc(int …

前端基础之HTML

HTML介绍 Web服务本质 import socketsk socket.socket()sk.bind(("127.0.0.1", 8080)) sk.listen(5)while True:conn, addr sk.accept()data conn.recv(8096)conn.send(b"HTTP/1.1 200 OK\r\n\r\n")conn.secd(b"<h1>Hello world!</h1&g…

指令引用了 内存 该内存不能为read 一直弹窗_【翻译】使用Rust测试ARM和X86内存模型

原文标题: The Story of Tail Call Optimizations in Rust 原文标题: Examining ARM vs X86 Memory Models with Rust原文链接: https://www.nickwilcox.com/blog/arm_vs_x86_memory_model/公众号&#xff1a; Rust碎碎念苹果公司最近宣布&#xff0c;他们将要把笔记本和桌面电…

npm升级依赖包_Taro跨端开发之依赖管理

昨天跑的好好项目,今天跑不起来我们在开发周期比较长的前端项目的时候,必然会遇到依赖管理的问题. 我们在开发项目的时候,我们用了大量的三方库.这些三方的依赖库时不时的会更新自己的代码.第三方依赖库的代码更新会很容易造成代码运行的不稳定, 比如昨天还跑的好好的项目,另一…

设计模式 建造者模式 与 Spring Bean建造者 BeanDefinitionBuilder 源码与应用

建造者模式 定义: 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示主要作用: 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象如何使用: 用户只需要给出指定复杂对象的类型和内容, 建造者模式负责按顺序创建复杂对象…

java 布隆过滤器_什么是布隆过滤器(Bloom Filter)?

在日常工作中&#xff0c;有一个比较常见的需求&#xff0c;就是需要判断一个元素是否在集合中。例如以下场景&#xff1a;给定一个IP黑名单库&#xff0c;检查指定IP是否在黑名单中&#xff1f;在接收邮件的时候&#xff0c;判断一个邮箱地址是否为垃圾邮件&#xff1f;在文字…

STM32上使用JSON

一、STM32工程中添加JSON 最近在一网2串项目&#xff0c;串口和网口之间可能需要定义一下简单的通信协议&#xff0c;而通信协议上则需要去定义一下通信的数据格式&#xff0c;上次听剑锋说要用Json来定义&#xff0c;目前查了下资料具体如何去应用还不 会。因为最新的KEIL上支…

Flex 学习

Flex案例一&#xff1a; 1 <html>2 <head>3 <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> 4 <title>无标题</title>5 <style type"text/css">6 body,h1,h2,h3,h4,…