Hadoop HA(高可用)搭建

news/2024/11/8 9:32:15/

ZooKeeper配置 

解压安装

添加ZK环境变量 

分发文件

 启动

安装配置 Hadoop 

解压安装

修改hadoop-env.sh文件 

修改Hadoop配置文件core-site.xml 

HDFS 配置文件hdfs-site.xml 

  MapReduce 配置文件 mapred-site.xml

YARN 配置文件yarn-site.xml 

配置worekers

分发配置好的Hadoop 

进行初始化 

查看每个节点的进程 

ZooKeeper配置 

解压安装

解压

tar -zxvf apache-zookeeper-3.5.7-bin -C /opt

改名 

mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7

在根目录下创建两个文件夹 

mkdir logs
mkdir data

配置zoo.cfg文件,在解压后的ZooKeeper目录中找到 conf 目录,复制一份 zoo_sample.cfg 并重命名为 zoo.cfg,修改 zoo.cfg 配置文件中的以下配置项:

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg 

修改为

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-3.5.7/data
dataLogDir=/opt/zookeeper-3.5.7/logs
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2889:3889
server.3=slave2:2890:3890

添加ZK环境变量 

vim /etc/profile

 添加如下:

export ZK_HOME=/opt/zookeeper-3.5.7
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin

 保存配置环境

source /etc/profile

分发文件

scp -r /opt/zookeeper-3.5.7/ slave1:/opt/
scp -r /opt/zookeeper-3.5.7/ slave2:/opt/

配置 myid:填写上面 server.x 中对应的数字 x,如:1、2、3。每个机子都不一样,

        只需要填写一个数字即可。但是这个数字非常重要,必须保证它的唯一性和正确性,否则可能导致集群运行出现问题。 

在分发的每个zookeeper-3.5.7/data的目录下面创建myid文件 

vim myid

文件内填写规则

master中填1

slave1填2

slave2填3

 启动

zkServer.sh start

注意:集群的每台都需要启动这个命令 

        所有节点上启动ZooKeeper服务,以便加入到集群中。

        这段日志输出表示ZooKeeper服务已经成功启动,并且JMX功能也已经默认开启。 

确认集群中所有节点的信息,以确保它们之间已经建立了有效的连接。可以使用如下命令查看: 

zkServer.sh status

        显示Mode: follower就代表已经正常启动了 

安装配置 Hadoop 

hadoop官方下载:Apache Hadoop 

解压安装

        解压安装包到opt目录下

tar -zxvf hadoop-3.1.3.tar.gz -C /opt

        在hadoop-3.1.3 目录下创建目录

mkdir logs
mkdir tmp
mkdir -p tmp/name
mkdir -p tmp/data

       添加hadoop环境变量 

vim /etc/profile

export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

        注意:另外两台主机也要进行相应的环境变量设置

 保存配置环境

source /etc/profile

 测试安装成功

hadoop version

修改hadoop-env.sh文件 

cd $HADOOP_HOME/etc/hadoop
vim hadoop-env.sh

写入如下: 

export JAVA_HOME=/opt/jdk1.8
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

修改Hadoop配置文件core-site.xml 

vim core-site.xml
<configuration>
<!--用来指定hdfs的老大-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.1.3/tmp</value>
</property><property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,salva2:2181</value></property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>30000</value></property><property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>

HDFS 配置文件hdfs-site.xml 

vim hdfs-site.xml
<configuration>
<property><name>dfs.qjournal.start-segment.timeout.mx</name><value>60000</value>
</property>
<property><name>dfs.nameservices</name><value>mycluster</value>
</property>
<property><name>dfs.ha.namenodes.mycluster</name><value>master,slave1</value>
</property>
<property><name>dfs.namenode.rpc-address.mycluster.master</name><value>master:8020</value>
</property>
<property><name>dfs.namenode.rpc-address.mycluster.slave1</name><value>slave1:8020</value>
</property>
<property><name>dfs.namenode.http-address.mycluster.master</name><value>master:50070</value>
</property>
<property><name>dfs.namenode.http-address.mycluster.slave1</name><value>slave1:50070</value>
</property>
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>
<property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha/CofiguredFailoverProxyProvider</value>
</property>
<property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value>
</property>
<property><name>dfs.ha.fencing.ssh.pricate-key-files</name><value>/root/.ssh/id_rsa</value>
</property>
<property><name>dfs.permissions.enabled</name><value>false</value>
</property>
<property><name>dfs.support.append</name><value>true</value>
</property>
<property><name>dfs.replication</name><value>2</value>
</property>
<property><name>dfs.namenode.name.dir</name><value>/opt/hadoop-3.1.3/tmp/namenode</value>
</property>
<property><name>dfs.namenode.data.dir</name><value>/opt/hadoop-3.1.3/tmp/datanode</value>
</property>
<property><name>dfs.journalnode.edits.dir</name><value>/opt/hadoop-3.1.3/tmp/jnode</value>
</property>
<property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
</property>
<property><name>dfs.webhdfs.enabled</name><value>true</value>
</property>
<property><name>dfs.ha.fencing.ssh.connect-timout</name><value>30000</value>
</property>
<property><name>ha.failover-controller.cli-check.rpc-timeout.ms</name><value>60000</value>
</property>
</configuration>

  MapReduce 配置文件 mapred-site.xml

vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>

YARN 配置文件yarn-site.xml 

vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave1</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
</configuration>

配置worekers

vim workers
master
slave1
slave2

分发配置好的Hadoop 

scp -r $HADOOP_HOME root@slave1:/opt
scp -r $HADOOP_HOME root@slave2:/opt

每个节点需要先启动journalnode 

hadoop-daemon.sh start journalnode

进行初始化 

hdfs namenode -format

格式化zkfc 

hdfs zkfc -formatZK

 将已格式化的namenodetmp目录传给另一个namenode 

scp -r /opt/hadoop-3.1.3/tmp/namenode/* root@slave1:/opt/hadoop-3.1.3/tmp/namenode/

启动hadoop集群

start-all.sh

查看每个节点的进程 

master:

 slave1:

slave2: 


http://www.ppmy.cn/news/85210.html

相关文章

Django框架之模板其他补充

本篇文章是对django框架模板内容的一些补充。包含注释、html转义和csrf内容。 目录 注释 单行注释 多行注释 HTML转义 Escape Safe Autoescape CSRF 防止csrf方式 表单中使用 ajax请求添加 注释 单行注释 语法&#xff1a;{# 注释内容 #} 示例&#xff1a; {# 注…

.NET 7.0 + MySQL在 C# 和 ASP.NET Core 中使用 Dapper 连接到 MySQL 数据库

Dapper ORM&#xff08;对象关系映射器&#xff09; Dapper 是一个微型 ORM&#xff0c;支持执行原始 SQL 查询并将结果映射到 C# 对象和集合&#xff0c;它作为一组在 ADO.NET 接口之上的扩展方法实现IDbConnection&#xff0c;因此 ADO.NET 在使用时提供与 MySQL 数据库的连接…

编写一个Python程序,计算一个字符串中出现次数最多的字符及其出现次数

题目:编写一个Python程序,计算一个字符串中出现次数最多的字符及其出现次数。 解答:下面是一个简单实现示例。此程序将一个字符串作为输入,使用字典来记录每个字符出现的次数,然后找到出现次数最多的字符及其出现次数并输出。如果有多个字符出现次数相同且都最大,则输出…

Verilog | FIFO简单实现

FIFO( First Input First Output)简单说就是指先进先出&#xff0c;也是缓存机制的一种&#xff0c;下面是我总结的 FIFO 的三大用途&#xff1a; 1)提高传输效率&#xff0c;增加 DDR 带宽的利用率。比如我们有 4 路视频数据缓存到 DDR 中去&#xff0c;比较笨的方法是&#x…

全国统计专业技术高级资格考试大纲(2021年)

《高级统计实务与案例分析》科目 一、考试目的 遵循突出能力考核的原则&#xff0c;以统计工作流程为主线&#xff0c;全面考察统计专业技术人员应用统计理论和经济理论知识&#xff0c;运用统计调查方法和数据信息&#xff0c;分析、判断、处理统计业务和解决统计工作实际问题…

JDK动态代理和CGLIB动态代理

JDK动态代理和CGLIB动态代理 JDK动态代理和CGLIB动态代理 JDK动态代理和CGLIB动态代理 ① JDK动态代理只提供接口的代理&#xff0c;不支持类的代理&#xff0c;要求被代理类实现接口。JDK动态代理的核心是InvocationHandler接口和Proxy类&#xff0c;在获取代理对象时&#x…

【机器学习】线性模型

文章目录 第三章&#xff1a;线性模型一、线性回归模型1.1、线性回归模型1.2、求解线性回归模型&#xff08;时刻要分清维度&#xff09;1.3、多输出线性回归模型 二、线性分类模型2.1、判别函数2.2、概率判别模型2.3、概率生成模型 第三章&#xff1a;线性模型 一、线性回归模…

Linux中的文件描述符

1. 认识文件描述符 文件描述符的概念&#xff1a;在Linux中&#xff0c;文件描述符是内核为了高效的管理已经被打开的文件所创建的索引 &#xff0c;它是一个非负整数&#xff0c;用于指代被打开的文件&#xff0c;所有执行I/O操作的系统调用都是通过文件描述符完成的。文件描述…