HadoopHA部署(1+x)

目录

打开已创建好的centOS虚拟机

配置网络

测试网络(内网、外网都要测试)

关机并克隆

启动三台机器,并为克隆的两台机器修改相应名称和IP,以及检测内外网,修改完后重启(init 6),使主机名生效

重启后连接xshell(三台虚拟机都要连接)

回到master1-1,下载lrzsz,传输文件(两种)

配置环境变量

ssh免密登录

配置zookeeper

配置Hadoop

初始化(顺序不能乱)

修改主机(Windows)的hosts文件(不修改无法用主机名登录)

打开网页


打开已创建好的centOS虚拟机

  • 配置网络

1.vi 打开网络配置文件

    2.修改配置文件

    3.重启网络

  • 测试网络(内网、外网都要测试)

  1. 修改主机名和映射

1.修改主机名(两种方法)

第一种

第二种

        使用命令hostnamectl set-hostname master1-1(主机名),并用bash生效

2.映射(因为考试时要求是三台虚拟机,映射都要写,另外两台虚拟机的IP在克隆完master1-1时要修改)

  • 关机并克隆

如上图操作在克隆一台虚拟机slave1-2

  • 启动三台机器,并为克隆的两台机器修改相应名称和IP,以及检测内外网,修改完后重启(init 6),使主机名生效

  • 重启后连接xshell(三台虚拟机都要连接)

  • 回到master1-1,下载lrzsz,传输文件(两种)

  • 第一种

    按照要求:在/usr/local/src/下新建文件夹h3cu,此文件夹用于存放传输的文件

    使用rz命令在h3cu下传输文件

    按住ctrl选择以下包,点击打开

    传输时乱码或毫无动静,则取消后再传一次

文件传输成功

第二种

打开xftp并连接

  • 将传输的包分别解压到相应位置,并修改名称

  • 配置环境变量

    • (环境变量配置错误后生效,许多命令无法使用,则输入export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ,使其环境变量可修改)

    Source一下使环境变量生效

    检查Java版本,检测环境变量是否生效

ssh免密登录

    查看是否已安装ssh服务

    使用yum进行安装ssh服务

    查看ssh进程

    生成密钥

    分发密钥

    检验登录

配置zookeeper

    复制并改名

    编辑文件

   建相关文件夹

    在/usr/local/src/zookeeper/data下编辑myid

    分发jdk

    分发zookeeper

    分发环境变量

    在克隆的机器里source一下,并检查Java

    分别到克隆的机器更改myid

配置Hadoop

    hadoop-env.sh

    core-site.xml

<configuration>

<!-- 指定 hdfs 的 nameservice 为 mycluster -->

 <property>

    <name>fs.defaultFS</name>

    <value>hdfs://mycluster</value>

 </property>

 <property>

    <name>hadoop.tmp.dir</name>

    <value>/usr/local/hadoop/tmp</value>

 </property>

 <!-- 指定 zookeeper 地址 -->

 <property>

    <name>ha.zookeeper.quorum</name>

    <value>master1-1:2181,slave1-1:2181,slave1-2:2181</value>

 </property>

 <!-- hadoop 链接 zookeeper 的超时时长设置 -->

 <property>

  <name>ha.zookeeper.session-timeout.ms</name>

    <value>30000</value>

 <description>ms</description>

 </property>

 <property>

    <name>fs.trash.interval</name>

     <value>1440</value>

 </property>

</configuration>

    hdfs-site.xml

<configuration>

<!-- journalnode 集群之间通信的超时时间 -->

 <property>

 <name>dfs.qjournal.start-segment.timeout.ms</name>

 <value>60000</value>

 </property>

 <!--指定 hdfs 的 nameservice 为 mycluster,需要和 core-site.xml 中的保持一致

dfs.ha.namenodes.[nameservice id]为在 nameservice 中的每一个 NameNode 设置唯一标示

符。配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。

如果使用"mycluster"作为 nameservice ID,并且使用"master"和"slave1"作为 NameNodes 标

示符 -->

 <property>

 <name>dfs.nameservices</name>

 <value>mycluster</value>

 </property>

 <!-- mycluster 下面有两个 NameNode,分别是 master,slave1 -->

 <property>

 <name>dfs.ha.namenodes.mycluster</name>

 <value>master1-1,slave1-1</value>

 </property>

 <!-- master 的 RPC 通信地址 -->

 <property>

 <name>dfs.namenode.rpc-address.mycluster.master1-1</name>

 <value>master1-1:9000</value>

 </property>

 <!-- slave1 的 RPC 通信地址 -->

 <property>

 <name>dfs.namenode.rpc-address.mycluster.slave1-1</name>

 <value>slave1-1:9000</value>

 </property>

 <!-- master 的 http 通信地址 -->

 <property>

 <name>dfs.namenode.http-address.mycluster.master1-1</name>

 <value>master1-1:50070</value>

 </property>

 <!-- slave1 的 http 通信地址 -->

 <property>

 <name>dfs.namenode.http-address.mycluster.slave1-1</name>

 <value>slave1-1:50070</value>

 </property>

<!-- 指定 NameNode 的 edits 元数据的共享存储位置。也就是 JournalNode 列表

 该 url 的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId

 journalId 推荐使用 nameservice,默认端口号是:8485 -->

 <property>

 <name>dfs.namenode.shared.edits.dir</name>

 <value>qjournal://master1-1:8485;slave1-1:8485;slave1-2:8485/mycluster</value>

 </property>

 <!-- 配置失败自动切换实现方式 -->

 <property>

 <name>dfs.client.failover.proxy.provider.mycluster</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>

 <property>

 <name>dfs.permissions.enabled</name>

 <value>false</value>

 </property>

 <property>

 <name>dfs.support.append</name>

 <value>true</value>

 </property>

 <!-- 使用 sshfence 隔离机制时需要 ssh 免登陆 -->

 <property>

 <name>dfs.ha.fencing.ssh.private-key-files</name>

 <value>/root/.ssh/id_rsa</value>

 </property>

 <!-- 指定副本数 -->

 <property>

 <name>dfs.replication</name>

 <value>2</value>

 </property>

 <property>

 <name>dfs.namenode.name.dir</name>

 <value>/usr/local/hadoop/tmp/name</value>

 </property>

 <property>

 <name>dfs.datanode.data.dir</name>

 <value>/usr/local/hadoop/tmp/data</value>

 </property>

 <!-- 指定 JournalNode 在本地磁盘存放数据的位置 -->

 <property>

 <name>dfs.journalnode.edits.dir</name>

 <value>/usr/local/hadoop/tmp/journal</value>

 </property>

 <!-- 开启 NameNode 失败自动切换 -->

 <property>

 <name>dfs.ha.automatic-failover.enabled</name>

 <value>true</value>

 </property>

 <!-- 启用 webhdfs -->

 <property>

 <name>dfs.webhdfs.enabled</name>

 <value>true</value>

 </property>

 <!-- 配置 sshfence 隔离机制超时时间 -->

 <property>

 <name>dfs.ha.fencing.ssh.connect-timeout</name>

 <value>30000</value>

 </property>

 <property>

 <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>

 <value>60000</value>

 </property>

 </configuration>

    mapred-site.xml

<configuration>

<!-- 指定 mr 框架为 yarn 方式 -->

 <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

</property>

 <!-- 指定 mapreduce jobhistory 地址 -->

 <property>

    <name>mapreduce.jobhistory.address</name>

    <value>master1-1:10020</value>

 </property>

 <!-- 任务历史服务器的 web 地址 -->

 <property>

<name>mapreduce.jobhistory.webapp.address</name>

    <value>master1-1:19888</value>

 </property>

 </configuration>

    yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

 <!-- 开启 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>master1-1</value>

 </property>

 <property>

<name>yarn.resourcemanager.hostname.rm2</name>

    <value>slave1-1</value>

 </property>

 <!-- 指定 zk 集群地址 -->

 <property>

  <name>yarn.resourcemanager.zk-address</name>

    <value>master1-1:2181,slave1-1:2181,slave1-2:2181</value>

 </property>

 <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

 </property>

 <property>

    <name>yarn.log-aggregation-enable</name>

    <value>true</value>

</property>

 <property>

    <name>yarn.log-aggregation.retain-seconds</name>

    <value>86400</value>

 </property>

 <!-- 启用自动恢复 -->

 <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>

    Slaves

    建立相关文件

    分发Hadoop

启动zookeeper(三台都要关闭)

    关闭防火墙(顺序:1.关闭防火墙 2.禁用防火墙 3.查看防火墙状态)

    三台机器先启动再检查状态(顺序不能乱)

    启动

    检查状态(两个follwer,一个leader

初始化(顺序不能乱)

    初始化HA在zookeeper中的状态(master1-1

    启动journalnode进程(三台机器

    初始化namenode(master1-1

    状态为0表示成功

    启动Hadoop

    查看进程(三台

    分发tmp文件

    在slave1-1下启动resourcemanager和namenode进程

    查看jps(master1-1和slave1-1)

修改主机(Windows)的hosts文件(不修改无法用主机名登录)

    两种方法:1.DOS命令修改 2.图像界面下修改权限(若无权限无法保存)

  1. win+r打开cmd

按ctrl+shift+回车进入管理员界面

进入目录,并用记事本打开hosts

修改并保存

  1. 进入C:\Windows\System32\drivers\etc目录下找到hosts文件

更改hosts文件的属性,使其可以修改内容

    右击——属性

    安全——编辑

    添加

    高级

编辑文件

打开网页

十八、杀死active的namenode

    刷新页面

    重启namenode

    刷新页面(active变为standby)

至此HadoopHA部署完成

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
本次实验旨在学习Hadoop分布式计算框架的部署和使用,以下是实验报告: 一、实验环境 1. 虚拟机软件:VMware Workstation Pro 16 2. 操作系统:Ubuntu Server 18.04 LTS 3. Hadoop版本:Hadoop-2.7.7 4. Java版本:OpenJDK 8 二、实验步骤 1. 安装Java 在Ubuntu系统上安装OpenJDK 8: ``` sudo apt-get update sudo apt-get install openjdk-8-jdk ``` 2. 下载Hadoop 从官网下载Hadoop-2.7.7版本:https://hadoop.apache.org/releases.html 3. 配置Hadoop 解压Hadoop文件,将其放置在指定目录下(此处为/usr/local/hadoop/): ``` sudo tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/ sudo mv /usr/local/hadoop-2.7.7 /usr/local/hadoop ``` 配置Hadoop环境变量: ``` sudo nano ~/.bashrc ``` 在文件末尾添加以下内容: ``` export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 保存并退出,然后使用以下命令使环境变量生效: ``` source ~/.bashrc ``` 4. 配置Hadoop集群 首先,在master节点上创建一个名为“hadoop”的用户,并设置密码: ``` sudo adduser hadoop sudo passwd hadoop ``` 然后在master节点和slave节点上安装ssh服务: ``` sudo apt-get install ssh ``` 生成ssh密钥: ``` ssh-keygen -t rsa ``` 将公钥复制到所有slave节点: ``` ssh-copy-id hadoop@slave1 ssh-copy-id hadoop@slave2 ... ``` 编辑Hadoop的配置文件/etc/hadoop/core-site.xml,添加以下内容: ``` <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration> ``` 其中“master”是master节点的主机名。 编辑Hadoop的配置文件/etc/hadoop/hdfs-site.xml,添加以下内容: ``` <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/hadoop/data/nameNode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/hadoop/data/dataNode</value> </property> </configuration> ``` 其中“dfs.replication”表示数据副本数,这里设置为3;“dfs.namenode.name.dir”表示NameNode的数据存储位置,“dfs.datanode.data.dir”表示DataNode的数据存储位置。 编辑Hadoop的配置文件/etc/hadoop/mapred-site.xml,添加以下内容: ``` <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> ``` 编辑Hadoop的配置文件/etc/hadoop/yarn-site.xml,添加以下内容: ``` <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> ``` 其中“yarn.resourcemanager.hostname”表示ResourceManager的主机名,“yarn.nodemanager.aux-services”表示NodeManager的辅助服务。 5. 启动Hadoop集群 启动Hadoop集群: ``` start-all.sh ``` 使用jps命令查看Hadoop进程: ``` jps ``` 输出如下: ``` 24012 Jps 23632 ResourceManager 23355 NameNode 23824 NodeManager 23519 SecondaryNameNode ``` 6. 验证Hadoop集群 在Hadoop集群中上传文件: ``` hdfs dfs -mkdir /input hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml /input ``` 运行Hadoop自带的wordcount例子: ``` hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output ``` 查看结果: ``` hdfs dfs -cat /output/part-r-00000 ``` 输出如下: ``` "1 "2 "3 "4 "5 "6 "7 "8 "9 "a 2 ``` 至此,Hadoop集群部署实验完成。 三、实验总结 通过本次实验,我学习了Hadoop分布式计算框架的部署和使用方法,了解了Hadoop集群的配置和启动方式,并成功运行了Hadoop自带的wordcount例子,加深了对Hadoop的理解和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清风--明月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值