CentOS7下基于Hadoop2.7.3集群搭建

2024-02-16 12:18

本文主要是介绍CentOS7下基于Hadoop2.7.3集群搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、准备工作

1.修改Linux主机名
2.修改IP
3.修改主机名和IP的映射关系
4.关闭防火墙
5.ssh免登陆 
6.安装JDK,配置环境变量等

7.集群规划:

主机名 IP 所需安装工具 运行进程

hadoop01 220.192.10.10 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

hadoop02 220.192.10.11 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

hadoop03 220.192.10.12 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

hadoop04 220.192.10.13 jdk、hadoop NameNode、DFSZKFailoverController

hadoop05 220.192.10.14 jdk、hadoop NameNode、DFSZKFailoverController

hadoop06 220.192.10.15 jdk、hadoop ResourceManager

hadoop07 220.192.10.16 jdk、hadoop ResourceManager

二、安装

1.在hadoop01上安装并配置zookeeper

1.1 解压zookeeper-3.4.9.tar.gz tar  -zxvf zookeeper-3.4.9.tar.gz /hadoop

2.2 进入到conf目录(cd /hadoop/zookeeper-3.4.9/conf/),修改zoo_sample.cfg文件:mv  zoo_sample.cfg zoo.cfg ;vi zoo.cfg

修改dataDir=/hadoop/zookeeper-3.4.9/data,在最后添加

server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888

保存后退出,创建tmp文件夹:mkdir  /hadoop/zookeeper-3.4.9/tmp ,在创建一个空文件:touch  /hadoop/zookeeper-3.4.9/tmp/myid,在myid文件夹中写入ID:1

2.将配置好的zookeeper拷贝到hadoop02、hadoop03上

scp -r /hadoop/zookeeper-3.4.9 hadoop02:/hadoop/

scp -r /hadoop/zookeeper-3.4.9 hadoop03:/hadoop/

修改tmp目录下的myid文件:vi myid,在hadoop02上将1改成2,在hadoop03上改成3,wq保存退出.

3.在hadoop01上安装配置hadoop2.7.3

3.1 解压到hadoop目录下:tar -zxvf hadoop-2.7.3.tar.gz /hadoop

3.2 配置环境变量:

export JAVA_HOME=/usr/java/jdk1.8.0_112
export HADOOP_HOME=/hadoop/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3.3 进入hadoop的etc目录修改配置文件:cd /hadoop/hadoop-2.7.3/etc/hadoop/

3.3.1   修改hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_112

3.3.2   修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop-2.7.3/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
</configuration>

3.3.3   修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop04:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop04:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop05:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop05:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02;hadoop03:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/hadoop/hadoop-2.7.3/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</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>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

3.3.4   修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

3.3.5   修改yarn-site.xml
<configuration>
<!-- 开启RM高可靠 -->
<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>hadoop06</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>hadoop07</value>
</property>
<!-- 指定zk集群地址 -->
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
</configuration>

3.3.6   修改slaves:slaves是指定子节点的位置,因为要在hadoop04上启动HDFS、在hadoop06启动yarn,所以hadoop04上的slaves文件指定的是datanode的位置,hadoop06上的slaves文件指定的是nodemanager的位置.
vi slaves

hadoop01

hadoop02

hadoop03

3.3.7   配置免密码登陆:在本机生成密钥:ssh-keygen -t rsa

将生成的公钥拷贝到其他节点上:

ssh-copy-id hadoop01

ssh-copy-id hadoop02

ssh-copy-id hadoop03

ssh-copy-id hadoop04

ssh-copy-id hadoop05

ssh-copy-id hadoop06

ssh-copy-id hadoop07

同样步骤在hadoop04,hadoop06上执行。

将hadoop04的公钥拷贝到hadoop05上,将hadoop06的公钥拷贝到hadoop01,hadoop02,hadoop03,hadoop07上。

3.4 将配置好的hadoop拷贝到其他节点

scp    -r    /hadoop/hadoop-2.7.3 hadoop02:/hadoop/

scp    -r    /hadoop/hadoop-2.7.3 hadoop03:/hadoop/

scp    -r    /hadoop/hadoop-2.7.3 hadoop04:/hadoop/

scp    -r    /hadoop/hadoop-2.7.3 hadoop05:/hadoop/

scp    -r    /hadoop/hadoop-2.7.3 hadoop06:/hadoop/

scp    -r    /hadoop/hadoop-2.7.3 hadoop07:/hadoop/

3.5 启动zookeeper集群(分别在hadoop01hadoop02hadoop03上启动zk)
cd /hadoop/zookeeper-3.4.9/bin/
./zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status


3.6 启动journalnode(分别在hadoop01hadoop02hadoop03上执行)
c
d /hadoop/hadoop-2.7.3/sbin

执行:hadoop-daemon.sh start journalnode

运行jps:在hadoop01hadoop02hadoop03上多了JournalNode进程

3.7 格式化HDFS

在hadoop04上执行:hdfs namenode -format 将生成的tmp文件拷贝给hadoop05:scp -r tmp/ hadoop05:/hadoop/hadoop2.7.3

3.8 格式化ZK(在hadoop04上执行即可)
hdfs zkfc -formatZK

3.9 启动HDFS(在hadoop04上执行)
sbin/start-dfs.sh

3.10 启动YARN(注:是在hadoop06上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,

所以把他们分开了,他们分开了就要分别在不同的机器上启动)

start-yarn.sh

  4. 测试

4.1 在浏览器中输入:220.192.10.13:50070

220.192.10.14:50070


4.2 验证HDFS HA

首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再kill掉active的NameNode
kill -9
2402

通过浏览器访问:220.192.10.13:50070,若状态变为active,且上传的文件还在,则说明配置正确。

将hadoop05的namenode手动启动:hadoop-daemon.sh start namenode

通过浏览器访问:220.192.10.14:50070状态变为standby。


这篇关于CentOS7下基于Hadoop2.7.3集群搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714498

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww