IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop高可用集群搭建 -> 正文阅读

[大数据]Hadoop高可用集群搭建

Hadoop集群配置

配置文件功能
hadoop.env.sh配置Hadoop运行所需的环境变量
yarn.env.sh配置Yarn运行所需的环境变量
core-site.xmlHadoop核心全局配置文件
hdfs-site.xmlHDFS配置文件,继承core-site.xml配置文件
mapred-site.xmlMapReduce配置文件,继承core-site.xml配置文件
yarn-site.xmlYarn配置文件,继承core-site.xml配置文件

Hadoop节点对应进程

hadoop01hadoop02hadoop03
NodeManagerNodeManagerNodeManager
NameNodeNameNode
DataNodeDataNodeDataNode
JournalNodeJournalNodeJournalNode
QuorumPeerMainQuorumPeerMainQuorumPeerMain
ResourceManagerResourceManager

DFSZKFailoverController

DFSZKFailoverController

Hadoop配置

????????一、配置虚拟机

? ? ? ? ? ? ? ? 1.新建虚拟机:hadoop01 hadoop02 hadoop03

? ? ? ? ? ? ? ? 2.配置host映射

192.168.26.137 hadoop01
192.168.26.133 hadoop02
192.168.26.134 hadoop03

? ? ? ? ? ? ? ?3.配置三台虚拟机间免密登录

? ? ? ? ? ? ? ? (1)生成密钥

ssh-keygen

? ? ? ? ? ? ? ? (2)拷贝密钥到其他节点

ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

? ? ? ? ? ? ? ? (3)验证是否拷贝成功

ssh hadoop01
ssh hadoop02
shh hadoop03

? ? ? ? 二、Hadoop安装

? ? ? ? ? ? ? ? 1.下载并上传Hadoop安装包

? ? ? ? ? ? ? ? 2.解压Hadoop安装包

tar -zxvf hadoop-2.4.1.tar.gz 

? ? ? ? ? ? ? ? 3.将解压后的文件移动到指定文件夹下

mv hadoop-2.4.1 /export/software/

? ? ? ? ? ? ? ? 4.修改相关配置

? ? ? ? ? ? ? ? ????????(1)修改core-site.xml

<configuration>
        <!--指定hdfs连接地址,集群模式(高可用)-->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://cluster</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/export/software/hadoop-2.4.1/tmp</value>
        </property>
        <property>
                <name>hadoop.native.lib</name>
                <value>false</value>
        </property>
        <!-- 指定ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点-->
        <property>
                 <name>ha.zookeeper.quorum</name>
                 <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        </property>
</configuration>

? ? ? ? ? ? ? ? ? ? ? ? (2)修改hdfs-site.xml

<configuration>
        <!--指定HDFS副本的数量,不能超过机器节点数-->
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <!-- 为namenode集群定义一个services name -->
        <property>
                <name>dfs.nameservices</name>
                <value>cluster</value>
        </property>
        <!-- nameservice 包含哪些namenode,为各个namenode起名 -->
        <property>
                <name>dfs.ha.namenodes.cluster</name>
                <value>nn01,nn02</value>
        </property>
        <!-- 名为nn01的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
        <property>
                <name>dfs.namenode.rpc-address.cluster.nn01</name>
                <value>hadoop01:9000</value>
        </property>
        <!--名为nn01的namenode的http地址和端口号,用来和web客户端通讯 -->
        <property>
                <name>dfs.namenode.http-address.cluster.nn01</name>
                <value>hadoop01:50070</value>
        </property>
        <!-- 名为nn02的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
        <property>
                <name>dfs.namenode.rpc-address.cluster.nn02</name>
                <value>hadoop02:9000</value>
        </property>
        <!--名为nn02的namenode的http地址和端口号,用来和web客户端通讯 -->
        <property>
                <name>dfs.namenode.http-address.cluster.nn02</name>
                <value>hadoop02:50070</value>
        </property>
        <!-- namenode间用于共享编辑日志的journal节点列表 -->
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/cluster</value>
        </property>
        <!-- journalnode 上用于存放edits日志的目录 -->
        <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.cluster</name>
          
  
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <!-- 一旦需要NameNode切换,使用ssh方式进行操作 -->
        <property>
                  <name>dfs.ha.fencing.methods</name>
                  <value>sshfence
                        shell(/bin/true)
                  </value>
        </property>
        <!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->
        <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/root/.ssh/id_rsa</value>
        </property>
        <!-- connect-timeout超时时间 -->
        <property>
                <name>dfs.ha.fencing.ssh.connect-timeout</name>
                <value>30000</value>
        </property>
        <property>
                <name>dfs.name.dir</name>
                <value>/export/software/hadoop-2.4.1/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.data.dir</name>
                <value>/export/software/hadoop-2.4.1/tmp/dfs/data</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
</configuration>

? ? ? ? ? ? ? ? ? ? ? ? (3)修改yarn-site.xml

<configuration>
 
<!-- Site specific YARN configuration properties -->
        <!-- 启用Resource Manager HA高可用性 -->
        <property>
                <name>yarn.resourcemanager.ha.enabled</name>
                <value>true</value>
        </property>
        <!-- NodeManager上运行的附属服务,默认是mapreduce_shuffle -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <!-- 指定resourcemanager的名字 -->
        <property>
                <name>yarn.resourcemanager.cluster-id</name>
                <value>yrc</value>
        </property>
        <!-- 使用了2个resourcemanager,分别指定Resourcemanager的地址 -->
        <property>
                <name>yarn.resourcemanager.ha.rm-ids</name>
                <value>rm1,rm2</value>
        </property>
        <!-- 指定rm1的地址  -->
        <property>
                <name>yarn.resourcemanager.hostname.rm1</name>
                <value>hadoop01</value>
        </property>
        <!-- 指定rm2的地址  -->
        <property>
                <name>yarn.resourcemanager.hostname.rm2</name>
                <value>hadoop02</value>
        </property>
        <!-- 指定zookeeper集群机器 -->
        <property>
                <name>yarn.resourcemanager.zk-address</name>
                <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        </property>
 
</configuration>

? ? ? ? ? ? ? ? ? ? ? ? ?(4)修改mapred-site.xml(该文件不存在,需要手动创建)

<configuration>
        <!-- 采用yarn作为mapreduce的资源调度框架 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

? ? ? ? ? ? ? ? ? ? ? ? (5)修改slaves文件

hadoop01
hadoop02
hadoop03

? ? ? ? ? ? ? ? ? ? ? ? (6)修改hadoop-env.sh和yarn-env.sh文件,指定jdk的地址

export JAVA_HOME=/export/software/jdk1.8.0_161

? ? ? ? ? ? ? ? ? ? ? ? (7)配置环境变量

vi /etc/profile

export HADOOP_HOME=/export/software/hadoop

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

? ? ? ? ? ? ? ? ? ? ? ? (8)将文件复制到hadoop02和hadoop03上

scp -r /export/software/hadoop-2.4.1 hadoop02:/export/software/hadoop-2.4.1/
scp -r /export/software/hadoop-2.4.1 hadoop03:/export/software/hadoop-2.4.1/

? ? ? ? 三、Hadoop启动

? ? ? ? ? ? ? ? 1.启动journalnode(三台虚拟机都需要启动)

hadoop-daemon.sh start journalnode

? ? ? ? ? ? ? ? 2.格式化

hadoop namenode -format
hdfs zkfc -formatZK

????????????????3.将hadoop文件夹下的tmp文件传到hadoop02

scp -r /export/software/hadoop-2.4.1/tmp hadoop02:/export/software/hadoop-2.4.1/

? ? ? ? ? ? ? ? 4.启动Hadoop

start-all.sh

? ? ? ? ? ? ? ? 5.查看进程

?

?

?????????????????6.测试namenode高可用

????????(1)在hadoop-01上kill掉namenode进程,然后通过浏览器查看hadoop-02的状态,发现状态变为active,说明高可用测试成功
????????(2)重新启动hadoop-01的namenode进程,sh start-dfs.sh,浏览器访问hadoop-01,此时hadoop-01的状态为standby

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 21:12:14  更:2021-08-06 21:12:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 16:44:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码