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

相关文章

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加