Hadoop集群搭建流程

Hadoop集群的搭建

1、虚拟机网络模式为NAT

2、修改主机名(立即永久生效)

hostnamectl set-hostname master

**3、修改为静态ip:

**https://blog.csdn.net/qq_43243579/article/details/106928821

4、修改主机名和IP的映射关系

终端输入:vim /etc/hosts
在这里插入图片描述
在末行插入对应IP地址和主机名后保存关闭
在这里插入图片描述

5、关闭防火墙

查看防火状态:systemctl status firewalld

暂时关闭防火墙:systemctl stop firewalld(立即生效,但是重启后又会开启)

永久关闭防火墙:systemctl disable firewalld(直接输入此命令只有在重启机器后才会生效)

重启防火墙:systemctl enable firewalld

6、设置ntp时间同步

设置服务端master时间同步:

首先选择时区:
输入 tzselect 进入选择时区界面:
在这里插入图片描述
得到
在这里插入图片描述
故在/etc/profile中设置TZ环境变量(保存退出后source生效)
TZ=‘Asia/Shanghai’;export TZ
在这里插入图片描述
安装ntp软件
语句为:yum install -y ntp (三台机器都需要)
master配置ntp文件

修改master配置文件
vi /etc/ntp.conf 文件末尾追加:
server 127.127.1.0(本地提供时间)
fudge 127.127.1.0 stratum 1 (设置层次)
注释掉server 0 ~ n (默认服务器注释掉)
在这里插入图片描述
master服务器重启服务:/bin/systemctl restart ntpd.service
master服务器设置ntp开机自启:/bin/systemctl enable ntpd.service

客户端与服务端同步

ntpdate master

设置定时任务(每十分钟同步一次):

crontab -e #写一个定时任务 

键入i,进入编辑模式 输入内容:在这里插入图片描述
查看定时任务列表:crontab -l
设置ntpd服务开机启动
systemctl enable ntpd.service

7、设置ssh免密

  1. 输入ssh-keygen -t rsa,一路默认回车,生成公钥在这里插入图片描述
  2. 将该授权文件authorized_keys文件复制到slaves中的节点:
    ssh-copy-id slave1
    ssh-copy-id slave2
    在这里插入图片描述
  • 查看生成的公钥文件
    cat .ssh/id_rsa.pub
    在这里插入图片描述
  • 查看授权列表
    cat .ssh/authorized_keys在这里插入图片描述
    目的:将.ssh/id_rsa.pub(公钥)放到其他机器上的authorized_keys中注意:Master节点特殊,需要把自身的公钥拷贝到自身的authorized_keys中。
    检查免密登录是否设置成功:ssh master/slave1看看能否进入目标服务器(第一次需要输入密码)

8、安装jdk

  1. 创建工作目录: mkdir -p /usr/java
  2. 下载软件: wget http://xxxx/jdk-8u171-linux-x64.tar.gz
  3. 解压: tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
  4. 删除软件包: rm -rf /usr/java/jdk-8u171-linux-x64.tar.gz
  5. 环境变量: vim /etc/profile
    在profile文件末尾加入
export JAVA_HOME=/usr/java/jdk1.8.0_65 #对应自己的jdk目录
export PATH=$PATH:$JAVA_HOME/bin
  1. 文件拷贝到其他节点
    将master节点安装好jdk的文件通过scp远程拷贝到其他两台机器:
scp -r /usr/java slave1:/usr/
scp -r /usr/java slave2:/usr/

将master节点配置好的profile文件通过scp远程拷贝到其他两台机器(这步可以在hadoop环境变量添加完毕后再一并操作):

scp -r /etc/profile slave1:/etc/
scp -r /etc/profile slave2:/etc/
  1. 最后使用source对系统环境变量进行生效
    source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
source filename 或 .filename
  1. 查看jdk是否配置成功
java -version

在这里插入图片描述

9、安装zookeeper

  1. 安装准备
    完成Zookeeper的解压后,在每个节点Zookeeper目录下创建数据目录Data。 mkdir data
    然后在Data目录下创建myid文件.(用于指定Server的编号) touch myid

    三台机器中myid分别指定为0,1,2(在搭建集群的时候,Zookeeper在启动的时候,会读取里面的数据与zoo.cfg中配置信息进行比较进而判断是哪个Server)

  2. 修改配置文件
    将conf目录下的zoo_sample.cfg修改为zoo.cfg.(三个都修改) mv zoo_sample.cfg zoo.cfg
    在这里插入图片描述
    修改zoo.cfg文件
    配置通式:serevr.A=B:C:D.解释如下:
    A:表示这是第几号机器.
    B:表示这台服务器的IP地址.
    C:表示这台机器与集群Leader服务器交换信息的端口.常用2888端口.
    D:如果集群中的Leader服务器挂了,选出一个新的Leader时,这个端口用来和其他服务器进行通信的端口.常用3888端口.因为是分布式集群搭建,所以可以配置一样的端口,如果是伪集群,在一台机器上搭建时,B就配置为127.0.0.1或localhost。C和D配置均为不同的端口.分布式集群中的每个节点都分布在不同的机器上,每个机器都有用的IP地址,端口也不会被其他节点所占用。

    vim zoo.cfg.(三个节点配置一样的).
    修改文件中dataDir路径为上文创建data文件的路径
    dataDir=/usr/local/zookeeper-3.4.12/data
    在文件中追加
    server.0=192.168.248.127:2888:3888
    server.1=192.168.248.128:2888:3888
    server.2=192.168.248.129:2888:3888
    在这里插入图片描述

  3. Zookeeper集群启动.
    三台机器分别采用后台启动方式启动。在相应的bin目录下启动,在启动的过程中也完成了Leader的选举。
    分别在bin目录下使用sh zkServer.sh start 启动Zookeeper集群,
    分别在启动目录下使用sh zkServer.sh status 查看Zookeeper集群状态。
    在这里插入图片描述
    参考原文链接:
    https://blog.csdn.net/HcJsJqJSSM/article/details/85337209

10、安装并配置Hadoop

  1. 创建工作目录: mkdir -p /usr/hadoop
  2. 下载软件: wget http://xxxx/hadoop
  3. 解压: tar -zxvf hadoop-2.7.1_64bit.tar.gz -C /usr/hadoop/
  4. 删除软件包: rm -rf /usr/hadoop/hadoop-2.7.1_64bit.tar.gz
  5. 配置相关文件信息

相关配置文件介绍:

hadoop-env.sh 用来定义Hadoop运行环境相关的配置信息;
core-site.xml 定义系统级别的参数,包括HDFS URL、Hadoop临时目录等;
hdfs-site.xml 定义名称节点、数据节点的存放位置、文本副本的个数、文件读取权限等;
mapred-site.xml MapReduce参数
yarn-site.xml集群资源管理系统参数配置

  • hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_65 #找到JAVA_HOME导入自己的jdk目录
  • core-site.xml(集群全局参数)
<property>  
 <name>fs.defaultFS</name> <!--配置NN节点地址与端口号-->
 <value>hdfs://master:9000</value>
</property>  
<property>  
 <name>hadoop.tmp.dir</name> <!--hadoop临时目录用来存放NN临时文件(tmp目录需要自己创建)-->
 <value>/usr/hadoop/hadoop-2.7.3/data/tmp</value>
</property>  
<property>  <!--SNN检查NN日志时间间隔(单位为秒)-->
 <name>fs.checkpoint.period</name> <!--设置两次相邻checkpoint之间的时间间隔,默认是1小时-->
 <value>3600</value>
</property>
<property>  
 <name>fs.trash.interval</name> <!--以分钟为单位的垃圾回收时间,垃圾站中数据超过此时间,会被删除。如果是0,垃圾回收机制关闭。-->
 <value>10080</value>
</property>
  • hdfs-site.xml
<property>  
 <name>dfs.replication</name>  <!--指定hdfs保存数据的副本数量-->
 <value>3</value>  
</property>  

<property>  
 <name>dfs.namenode.name.dir</name>  <!--指定hdfs中NN的本地存储位置(name目录需要自己创建)-->
 <value>/usr/hadoop/hadoop-2.7.3/hdfs/name</value>  
</property>  

<property>  
 <name>dfs.datanode.data.dir</name>  <!--指定hdfs中DN的本地存储位置(data目录需要自己创建)-->
 <value>/usr/hadoop/hadoop-2.7.3/hdfs/data</value>  
</property>   

<property>  
 <name>dfs.namenode.http-address</name>  <!--定义namenode的HTTP服务器地址和端口-->
 <value>master:50070</value>  
</property>

<property>  
 <name>dfs.namenode.secondary.http-address</name>  <!--定义HDFS对应的HTTP服务器地址和端口-->
 <value>slave1:50090</value>  
</property>

<property>
<name>dfs.webhdfs.enabled</name> <!--开启webhdfs,允许文件的访问修改等操作-->
<value>true</value>
</property>
  • mapred-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_65 #找到JAVA_HOME导入自己的jdk目录
  • mapred-site.xml
    默认情况下只有mapred.xml.template文件,
    复制并重命名cp mapred-site.xml.template mapred-site.xml
    随后编辑mapred-site.xml文件
<property>
 <name>mapreduce.framework.name</name> <!--取值为local、classic、yarn其中之一,选择yarn,使用yarn集群实现资源分配,默认是local-->
 <value>yarn</value>
</property>
  • yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_65 #找到JAVA_HOME导入自己的jdk目录
  • yarn-site.xml
<property><!--设置运行yarn的机器-->
 <name>yarn.resourcemanager.hostname</name>
 <value>master</value>
</property>

<property> <!--RM提供客户端访问的地址及端口-->
 <name>yarn.resourcemanager.address</name>
 <value>${yarn.resourcemanager.hostname}:8032</value>    
</property>

<property><!--RM提供给ApplicationMaster的访问地址,AM通过该地址向RM申请资源、释放资源等-->
 <name>yarn.resourcemanager.scheduler.address</name>
 <value>${yarn.resourcemanager.hostname}:8030</value>    
</property>

<property><!--RM对web服务提供地址,用户通过该地址可以在浏览器上查看集群各类信息-->
 <name>yarn.resourcemanager.webapp.address</name>
 <value>${yarn.resourcemanager.hostname}:8088</value>    
</property>

<property><!--RM提供NodeManager地址,通过该地址向RM心跳、领取任务等-->
 <name>yarn.resourcemanager.resource-tracker.address</name>
 <value>${yarn.resourcemanager.hostname}:8031</value>
</property>

<property><!--RM提供的管理员访问地址,向RM发送管理命令等-->
 <name>yarn.resourcemanager.admin.address</name>
 <value>${yarn.resourcemanager.hostname}:8033</value>
</property>

<property><!--用户自定义服务,需配置成mapreduce_shuffle,才可运行MapReduce程序-->
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>
  • slaves
    在slaves文件中将原有名称改成想要部署datanode的机子名称
vim slaves

在这里插入图片描述

  1. 将hadoop添加到环境变量
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin

在这里插入图片描述
7. 全部配置信息配置完毕后:

将master节点配置好的hadoop文件通过scp远程拷贝到其他两台机器:

scp -r /usr/hadoop slave1:/usr/
scp -r /usr/hadoop slave2:/usr/

将master节点配置好的profile文件通过scp远程拷贝到其他两台机器:

scp -r /etc/profile slave1:/etc/
scp -r /etc/profile slave2:/etc/

11、格式化并启动Hadoop

关于hdfs的格式化:

  • 首次启动需要进行格式化,格式化之后,集群启动成功,后续再也不要进行格式化
  • 格式化本质是进行文件系统的初始化操作,创建一些自己所需要的文件
  • 格式化的操作要在hdfs集群的主角色(namenode)所在机器上操作
hadoop namenode -format //格式化

格式化成功:在这里插入图片描述
cd到current目录下会看到相关文件信息:在这里插入图片描述在配置了etc/hadoop/slaves何免密登录的情况下可使用程序脚本启动所有Hadoop两个集群的相关进程。
cd到sbin目录下可查看到相关可执行文件:
在这里插入图片描述
启动集群

在master的sbin目录上执行:

start-dfs.sh

结果如下
在这里插入图片描述
随后执行:

start-yarn.sh

结果如下:
在这里插入图片描述
利用 jps 查看个节点的部署结果:
master
在这里插入图片描述
slave1
在这里插入图片描述
slave2
在这里插入图片描述
关闭集群
在master节点输入:

stop-dfs.sh
stop-yarn.sh

stop-all.sh

集群成功关闭
在这里插入图片描述

至此Hadoop集群搭建完毕!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自律也自由

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值