大数据高可用集群环境安装与配置(06)——安装Hadoop高可用集群

下载Hadoop安装包

登录 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 镜像站,找到我们要安装的版本,点击进去复制下载链接

安装Hadoop时要注意版本与后续安装的HBase、Spark等相关组件的兼容,不要安装了不匹配的版本,而导致某些组件需要重装

输入命令进行安装操作

cd /usr/local/src/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
tar -zxvf hadoop-2.7.7.tar.gz
mv hadoop-2.7.7 /usr/local/hadoop/

修改服务器系统环境变量

所有服务器都需要按要求修改配置

vi /etc/profile

在尾部添加下面配置

export HADOOP_HOME=/usr/local/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin

保存退出后,运行命令,让配置马上生效

source /etc/profile

创建Hadoop需要的文件夹

# 所有服务器都需要执行创建hadoop的tmp文件夹
mkdir -p /data/hadoop/

# 在两台master服务器创建这个文件夹
mkdir -p /data/hadoop/journaldata

配置Hadoop参数

打开Hadoop对应版本的官方页面,按说明对Hadoop配置文件配置相关参数

http://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-common/SingleCluster.html

1. 配置hadoop-env.sh

cd /usr/local/hadoop/etc/hadoop/
vi hadoop-env.sh

在文件尾部添加java安装路径

export JAVA_HOME=/usr/local/java/jdk/

2. 配置core-site.xml

vi core-site.xml

将配置文件里的内容修改为下面内容:

<configuration>
    <!-- NameNode URI,客户端访问HDFS地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://nameservice/</value>
    </property>
    <!-- 以分钟为单位的垃圾回收时间,垃圾站中数据超过此时间,会被删除。如果是0,垃圾回收机制关闭 -->
    <property>
        <name>fs.trash.interval</name>
        <value>4320</value>
    </property>
    <!-- 设置hadoop临时目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop/</value>
    </property>
    <!-- 设置zookeeper集群地址 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>master:2181,master-backup:2181</value>
    </property>
</configuration>

3. 配置hdfs-site.xml

vi hdfs-site.xml

将配置文件里的内容修改为下面内容:

<configuration>
    <!-- hadoop存储文件的副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 设置hadoop namenode存储路径 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/name</value>
    </property>
    <!-- 设置hadoop datanode存储路径 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/data</value>
    </property>
    <!--设置hdfs的nameservice,需要和core-site.xml中的保持一致 -->
    <property>
        <name>dfs.nameservices</name>
        <value>nameservice</value>
    </property>
    <!-- nameservice下面有两个NameNode -->
    <property>
        <name>dfs.ha.namenodes.nameservice</name>
        <value>namenodes1,namenodes2</value>
    </property>
    <!-- namenodes1的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.nameservice.namenodes1</name>
        <value>master:9000</value>
    </property>
    <!-- namenodes1的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.nameservice.namenodes1</name>
        <value>master:50070</value>
    </property>
    <!-- namenodes2的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.nameservice.namenodes2</name>
        <value>master-backup:9000</value>
    </property>
    <!-- namenodes2的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.nameservice.namenodes2</name>
        <value>master-backup:50070</value>
    </property>
    <!-- 开启NameNode失败自动切换 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!-- 设置NameNode的元数据在JournalNode上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://master:8485;master-backup:8485/nameservice</value>
    </property>
    <!-- 设置JournalNode存放数据位置 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/data/hadoop/journaldata</value>
    </property>
    <!-- 配置失败自动切换实现方式 -->
    <property>
        <name>dfs.client.failover.proxy.provider.nameservice</name>
        <value>
            org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
        </value>
    </property>
    <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
            shell(/bin/true)
        </value>
    </property>
    <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>~/.ssh/id_rsa</value>
    </property>
    <!-- 配置sshfence隔离机制超时时间 -->
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>
</configuration>

4. 配置mapred-site.xml

mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

将配置文件里的内容修改为下面内容

<configuration>
    <!-- 设置执行框架为Hadoop YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

5. 配置yarn-site.xml

vi yarn-site.xml

将配置文件里的内容修改为下面内容

<configuration>
    <!-- 启用resourcemanager为高可用 -->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <!-- 启用MapReduce功能 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 定义在节点管理器总的可用资源,用于container申请的物理内存大小。这里需要根据服务器实际的内存大小进行对应的调整 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>1024</value>
    </property>
    <!-- 设置resourcemanager的集群标识, 确保RM不会接管另一个集群 -->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yrc</value>
    </property>
    <!-- 设置resourcemanager的名字 -->
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>resourcemanager1,resourcemanager2</value>
    </property>
    <!-- 设置resourcemanager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname.resourcemanager1</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.resourcemanager2</name>
        <value>master-backup</value>
    </property>
    <!-- 设置resourcemanager的webapp地址 -->
    <property>
        <name>yarn.resourcemanager.webapp.address.resourcemanager1</name>
        <value>master:8088</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address.resourcemanager2</name>
        <value>master-backup:8088</value>
    </property>
    <!-- 设置zookeeper集群地址 -->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>master:2181,master-backup:2181</value>
    </property>
    <!-- 开启 YARN 集群的日志聚合功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!-- YARN 集群的聚合日志最长保留时长 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <!--1天-->
        <value>86400</value>
    </property>
    <!-- 启用resourcemanager自动恢复 -->
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
    </property>
    <!-- 制定 resourcemanager 的状态信息存储在 zookeeper 集群上-->
    <property>
        <name>yarn.resourcemanager.store.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
</configuration>

6. 配置hadoop启动用户

如果使用root用户启动hadoop服务,则需要做以下配置,不然会直接报错

vi /usr/local/hadoop/sbin/start-dfs.sh

在第二行直接添加下面配置

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vi /usr/local/hadoop/sbin/stop-dfs.sh

在第二行直接添加下面配置

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
vi /usr/local/hadoop/sbin/start-yarn.sh

在第二行直接添加下面配置

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
vi /usr/local/hadoop/sbin/stop-yarn.sh

在第二行直接添加下面配置

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

7. 添加集群子节点配置

vi slaves

将localhost改为下面内容

node1
node2
node3

8. 将hadoop同步到其他服务器上

rsync -avz /usr/local/hadoop/ master-backup:/usr/local/hadoop/
rsync -avz /usr/local/hadoop/ node1:/usr/local/hadoop/
rsync -avz /usr/local/hadoop/ node2:/usr/local/hadoop/
rsync -avz /usr/local/hadoop/ node3:/usr/local/hadoop/

9. 启动journalnode

分别在master和master-backup服务器上执行命令,启动journalnode

/usr/local/hadoop/sbin/hadoop-daemon.sh start journalnode

启动后使用jps查看,可以发现两台服务器上已多出了JournalNode进程

10. 格式化namenode

如果是全新集群,第一次namenode启动,需要执行格式化操作(只在master服务器执行)

/usr/local/hadoop/bin/hdfs namenode -format

将master服务器namenode格式化生成的文件复制到master-backup中

rsync -avz /data/hadoop/dfs master-backup:/data/hadoop/

如果是非HA集群转换成HA集群,则需要复制旧集群master上的dfs到新增的master-backup服务器上,即只需要执行上面的复制命令即可,不需要再次格式化

然后在新master-backup服务器还需要执行下面命令,实现待命状态引导

/usr/local/hadoop/bin/hdfs namenode -bootstrapStandby

然后执行初始化操作,将master上的数据同步到master-backup

/usr/local/hadoop/bin/hdfs namenode -initializeSharedEdits

11. 格式化ZKFC

初始化容灾管理器

/usr/local/hadoop/bin/hdfs zkfc -formatZK

执行后,可在master和master-backup服务器上分别查看/data/hadoop/journaldata/目录,如果里面自动生成了nameservice文件夹,即表示初台化成功了

12. 启动hadoop服务

在master服务器中运行命令,启动HDFS

/usr/local/hadoop/sbin/start-all.sh

master-backup服务器上的resourcemanager需要手动启动

/usr/local/hadoop/sbin/yarn-daemon.sh start resourcemanager

在master与master-backup服务器上输入jps命令,就可以查看到已启动的服务

3569 Jps
1987 JournalNode
3220 NameNode
2937 QuorumPeerMain
10616 ResourceManager
3501 DFSZKFailoverController

执行上面命令后,各node节点上也已启动了NodeManager,datanode服务需要手动登录各node节点服务器上去分别启动

/usr/local/hadoop/sbin/hadoop-daemon.sh start datanode

输入jps命令,就可以查看到已启动的服务

15083 NodeManager
23043 DataNode
16319 Jps

13. 查看hadoop运行状态

在浏览器打开 http://192.168.10.90:8088/cluster 与 http://192.168.10.91:8088/cluster 查看到hadoop的运行状态

打开 http://192.168.10.90:50070/dfshealth.html#tab-datanode 与 http://192.168.10.91:50070/dfshealth.html#tab-overview 可以分别查看到两个master服务器的namenodes的状态分别为active与standby

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

作者博客:http://www.cnblogs.com/EmptyFS/

原文地址:https://www.cnblogs.com/EmptyFS/p/12113138.html

时间: 2024-10-10 12:11:14

大数据高可用集群环境安装与配置(06)——安装Hadoop高可用集群的相关文章

大数据学习实践总结(2)--环境搭建,JAVA引导,HADOOP搭建

PS:后续的文章会把我实践的内容分解成为一个个的小模块,方便大家的学习,交流.文未我也会附上相关的代码.一起加油!    学有三年的大数据原理,一直没有实践过.最近准备离职,正好把自己所学的大数据内容全部实践一下,也不至于只会纯理论.面对实践,首先要有空杯心态,倒空自己之后,才能学到更多,加油!也希望大家多关注,以后会更多注重实践跟原理的结合. 环境搭建 对于大数据,重点在于Hadoop的底层架构.虽说现在spark架构用的还是比较多.但hadoop还是基础.还有就是为什么要以Linux为基础,

Kafka:ZK+Kafka+Spark Streaming集群环境搭建(八)安装zookeeper-3.4.12

如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.> 如何安装hadoop2.9.0请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0> 如何安装spark2.2.1请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1

Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1

如何配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.> 如何安装hadoop2.9.0请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0> 安装spark的服务器: 192.168.0.120 master 192.168.0.121 slave1 192.168.0.122 slave

Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.> 如何安装hadoop2.9.0请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0> 如何安装spark2.2.1请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1

Spark修炼之道(基础篇)——Linux大数据开发基础:第一节、Linux介绍、安装及使用初步

本节主要内容 Linux简史 Linux特点 Ubuntu Linux安装 Linux使用初步 1. Linux简史 要讲述大名鼎鼎的Linux,必然要先从UNIX系统谈起,下面这幅图给出了Unix系统的进化图: 图片来源:http://baike.baidu.com/link?url=QfoqWtWGs-BjpnfEy_AUk7Bm3XHuf6JbN92HCOoUBfFfj8BuSDkbwmldtmUEmGRDUwqsQMIV4jCKHvdkSPr3Lq 从进化图中可以看到,目前所有的主流操作

项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点MySQL集群和多管理节点MySQL集群 上一篇的博客中,我们搭建的MySQL集群架构中,只存在一个管理节点,这样搭建的集群可以用如下所示的结构表示. 仔细分析上图就会发现,上图所示的单管理节点MySQL集群存在当唯一的管理节点由于网络.断电.压力过大等各种原因宕机后,数据节点和SQL节点将会各自为

Redis安装与配置Redis安装与配置

今天在使用Redis的时候遇到了一些问题,这个问题的解决,发现很多人使用Redis的时候没有一点安全意识.所以又重温了一下Redis,觉得应该写一下Redis的安全和配置. Redis安装与配置Redis安装与配置 安装 下载,解压,编译: $ wget http://download.redis.io/releases/redis-4.0.10.tar.gz $ tar xzf redis-4.0.10.tar.gz $ mv redis-4.0.10 /usr/local/redis $ c

Spring XD简介:大数据应用的运行时环境

简介 Spring XD(eXtreme Data,极限数据)是Pivotal的大数据产品.它结合了Spring Boot和Grails,组成Spring IO平台的执行部分.尽管Spring XD利用了大量现存的Spring项目,但它是一种运行时环境,而不是一个类库或者框架,它包含带有服务器的bin目录,你可以通过命令行启动并与之交互.运行时可以运行在开发机上.客户端自己的服务器上.AWS EC2上或者Cloud Foundry上. Spring XD中的关键组件是管理和容器服务器(Admin

大数据高性能数据库Redis在Windows上的配置

Redis学习笔记----Redis在windows上的安装和配置 Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcach

大数据调错系列之:自己总结的myeclipse连接hadoop会出现的问题

在我们学习或者工作中开始hadoop程序的时候,往往会遇到一个问题,我们写好的程序需要打成包放在集群中运行,这无形中在浪费我们的时间,因为程序可以需要不断的调试,然后把最终程序放在集群中即可.为了解决这个问题,现在我们配置远程连接hadoop,远程调试的方法. 一段程序如下:获取更多大数据视频资料请加QQ群:947967114 当我们在运行的时候会有如下众多的错误: 1.基础环境配置:首先需要注意自己使用的hadoop的版本: 这说明是2.6.0的所以需要下载一个连接包:hadoop-eclip