大数据高可用集群环境安装与配置(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..tar.gz
mv hadoop-2.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/
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_NAMENODE_OPTS="-XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSParallelRemarkEnabled -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:/data/logs/hadoop/gc-`date +'%Y%m%d'`.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps ${HADOOP_NAMENODE_OPTS}"
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进程
在两台master服务器上安装psmisc组件,用于故障检查时,服务可以正常执行检查命令:fuser -v -k -n tcp 9000
yum install -y psmisc
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命令,就可以查看到已启动的服务
Jps
JournalNode
NameNode
QuorumPeerMain
ResourceManager
DFSZKFailoverController
执行上面命令后,各node节点上也已启动了NodeManager,datanode服务需要手动登录各node节点服务器上去分别启动
/usr/local/hadoop/sbin/hadoop-daemon.sh start datanode
输入jps命令,就可以查看到已启动的服务
NodeManager
DataNode
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/
大数据高可用集群环境安装与配置(06)——安装Hadoop高可用集群的更多相关文章
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(八)安装zookeeper-3.4.12
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- CentOS6安装各种大数据软件 第三章:Linux基础软件的安装
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- Redis安装与配置Redis安装与配置
今天在使用Redis的时候遇到了一些问题,这个问题的解决,发现很多人使用Redis的时候没有一点安全意识.所以又重温了一下Redis,觉得应该写一下Redis的安全和配置. Redis安装与配置Red ...
- 二进制搭建kubernetes多master集群【三、配置k8s master及高可用】
前面两篇文章已经配置好了etcd和flannel的网络,现在开始配置k8s master集群. etcd集群配置参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集 ...
- 大数据项目之_15_帮助文档_NTP 配置时间服务器+Linux 集群服务群起脚本+CentOS6.8 升级到 python 到 2.7
一.NTP 配置时间服务器1.1.检查当前系统时区1.2.同步时间1.3.检查软件包1.4.修改 ntp 配置文件1.5.重启 ntp 服务1.6.设置定时同步任务二.Linux 集群服务群起脚本2. ...
- 大数据入门第二十二天——spark(一)入门与安装
一.概述 1.什么是spark 从官网http://spark.apache.org/可以得知: Apache Spark™ is a fast and general engine for larg ...
随机推荐
- 车林通购车之家--购车计算器模块--算法js
//CarCalculator.js var checkedClass = "jsq-item-check jsq-item-checked"; var uncheckedClas ...
- 通过css 居中div的几种常用方法
1.text-align:center方式 .center{ text-align:center; } center_text{ display:inline-block; width:500px } ...
- MongoDB分片技术原理和高可用集群配置方案
一.Sharding分片技术 1.分片概述 当数据量比较大的时候,我们需要把数分片运行在不同的机器中,以降低CPU.内存和Io的压力,Sharding就是数据库分片技术. MongoDB分片技术类似M ...
- 七 联系人与客户多对一配置&联系人列表&分页查询联系人
联系人管理: 联系人实体类: package com.mycrm.domain; /** * 联系人的实体 * @author jt *CREATE TABLE `cst_linkman` ( `lk ...
- 01.DesignParttern设计模式,简单工厂,工厂方法,抽象工厂三大工厂的区别与联系
工厂用来生产对象,对象具有方法和属性. 简单工厂的缺点(简单工厂并不是23中设计模式): 工厂类的职责相对过重,增加新的产品,需要修改工厂类的判断逻辑,违背开闭原则: JDK源 ...
- Java8 使用LocalDate计算两个日期间隔多少年,多少月,多少天
最近项目遇到一个需要计算两个日期间隔的期限,需要计算出,整年整月整日这样符合日常习惯的说法,利用之前的Date和Calendar类会有点复杂,刚好项目使用了JDK8,那就利用起来这个新特性,上代码: ...
- 原生JS写表单验证提交功能
先上效果图: 表单的基础内容就是昵称判断.手机号判断.邮箱判断.身份证号码判断,这里是用到正则验证检验格式. 页面的表单写法就是一个form的提交.输入框用input来实现,输入内容用value来获取 ...
- vue题型
一 v-show和v-if区别 个人理解 相同:v-show和v-if都能控制元素的显示和隐藏.两个都是开关. 区别: 1.v-if 是懒加载,是有条件的渲染,它会确保在切换过程中添加或者删除元素. ...
- 2018年第九届蓝桥杯【C++省赛B组】(未完)
第一题 标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容 利用excel更加快捷: 答案是125 ...
- Java 定时循环运行程序
Timer 和 ScheduledExecutorSeruvce 都能执行定时的循环任务,有函数 scheduleAtFixedRate.但是,如果任务运行时间较长,超过了一个周期时长,下一个任务就会 ...