Hadoop 及 Spark 分布式HA运行环境搭建

81f542067749cded427a6331f599b96e.gif

工欲善其事必先利其器,在深入学习大数据相关技术之前,先手动从0到1搭建一个属于自己的本地 Hadoop 和 Spark 运行环境,对于继续研究大数据生态圈各类技术具有重要意义。本文旨在站在研发的角度上通过手动实践搭建运行环境,文中不拖泥带水过多讲述基础知识,结合 Hadoop 和 Spark 最新版本,帮助大家跟着步骤一步步实践环境搭建。

一、总体运行环境概览

(1) 软件包及使用工具版本介绍表:

a9198571b950a9c3689503c6d0606971.png

 (2)环境部署与分布介绍表:

9d938be64b37b0d01c296f373bd369a7.png

 (3)进程介绍:(1 表示进程存在,0 表示不存在)

1a9be6b84500a47a2bb2b225ce9ca11e.png

二、系统基础环境准备

步骤 1:虚拟机中 Linux 系统安装(略)

VirtualBox 中安装 CentOS7 操作系统

步骤 2:CentOS7 基础配置

(1) 配置主机的 hostname

命令:vim/etc/hostname

510ae0b7a2b48d1b337551c8b5e4f94f.png

(2) 配置 hosts, 命令 vim /etc/hosts

1581ffe15a3831506e86436f3ba49a92.png 

(3) 安装 JDK

命令:

rpm -qa | grep java 查看是否有通过 rpm 方式安装的 java

java -version 查看当前环境变量下的 java 版本

1) filezilla 上传安装包,tar -zxvf
jdk-8u212-linux-x64.tar.gz 解压

2) bin 目录的完整路径:
/usr/local/jdk/jdk1.8.0_212/bin

3) vim /etc/profile 配置 jdk 环境变量

0a1e1d41cf32364e1a1085d375af8944.png

88d0e87a3c7b6d68fcb7ca7b76c31023.png

(4) 复制主机:

1)利用 VirtualBox 复制功能复制两台主机

2)命令:vi
/etc/sysconfig/network-scripts/ifcfg-eth0,设置相应的网络信息

3)三台主机 IP 分别为:192.168.0.20/21/22

833f59fd82afd994131062495e498abe.png

(5) 配置三台主机 ssh 无密码登录(略)

(6) 安装 zookeeper

1) filezilla 上传安装包,zookeeper-3.4.10.tar.gz 解压

2) bin 目录的完整路径:
/usr/local/zookeeper/zookeeper-3.4.10/bin

3) vim /etc/profile 配置 jdk 环境变量

ab61e4a5b9faa756fb63bd0dac03b1d7.png

4) zookeeper 的配置文件修改,zookeeper-3.4.10/conf/

50c798af7f6eff002936b102dfdd46d4.png

5) 执行命令从 master 节点复制配置到其他两个节点

aafe1294646c0d6c04fc2eb220a9e2f8.png

6) 每台机器 zookeeper 目录下新建一个 data 目录, data 目录下新建一个 myid 文件,master 主机存放标识值 1;slave1 主机标识值为 2;slave3 主机标识值为 3

7) 每台机器上命令:zkServer.sh start ,启动 ZK,进程名:QuorumPeerMain

a547bd40a3559db5b6db39bb30da6f48.png

三、Hodoop 安装与部署

3.1 安装 Hadoop

1)filezilla 上传安装包,hadoop-3.3.4.tar.gz 解压

2)bin 目录的完整路径:/usr/local/hadoop/hadoop-3.3.4/bin

3)vim /etc/profile 配置 jdk 环境变量

44d017b216eff24ac68a394cae231541.png

4) 修改配置文件共 6 个:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 和 workers

文件 1:hadoop-env.sh;增加 jdk 环境变量

831dbdf4eb002c788f4d6fdb0442e6f8.png

文件 2:core-site.xml;配置临时目录及 zookeeper 信息

9c49b8365c936ac4f1fd1f6a36ee5b7c.png

文件 3:hdfs-site.xml;配置 hdfs 信息

96e566da9b776a39cc70803c8e8a8ad2.png

文件 4:mapred-site.xml;配置 mapreduce 和 dfs 权限信息

1543c81aeaf42f1b39ba15e5754ee876.png

文件 5:yarn-site.xml;配置 yarn 资源调度信息

de671467be08fccfebfc109710f90017.jpeg

文件 6: worker 文件存放当前的 worker 节点名,复制到每一个虚拟机中

46f3213b5bdc179e667c1f64f05ef401.png

3.2 启动 Hadoop

1) 使用命令:hadoop-daemon.sh start journalnode 启动 journalnode 进程(每个节点执行)

436f2197ab38d75ffe171bc672ee8108.png

2) 使用命令:hadoop-daemon.sh start namenode 启动 namenode 进程(master、slave1 节点上执行)

6d5c59653e09e33ba5bb86b8a5ed5da1.png

cde63c4a7a67905a04ed811abbce936e.png

3) 使用命令:hadoop-daemon.sh start datanode 在所有节点上启动 datanode 进程

e19cd751d2d9beebf8681fd8d18b9db2.png

cf34667ecaaacb5f62a6c956d6808760.png

7dd3aaaf8353d35316e6be175b075c22.png

4) 使用命令:start-yarn.sh 在 master 上启动 yarn

45ebb4e22fa1fbeab722f6917a97f874.jpeg

1be760060ed3ebc2a5ea0205274d6d17.png

5) 使用命令:hdfs zkfc -formatZK 在 ZK 上生成 ha 节点

3f938743ae56e5a965c263deabea4de1.png

6) 使用命令:hadoop-daemon.sh start zkfc 启动 DFSZKFailoverController 进程,在 master 节点执行

f8b5ba1999376515e9d79dbc70904a7f.png

29aa67de8e433badcbb3cfedf2413132.png

a. 访问 HDFS 的管理页面

http://192.168.0.20:50070 此处 192.168.0.20 为 namenode 节点的 Active 节点

http://192.168.0.21:50070 此处 192.168.0.20 为 namenode 节点的 standby 节点

67bf1a9521f82903230c86b5a2828694.png

874a12ff0483749a072dd0df3e0c16ef.png

3.3 验证 HDFS 使用

使用命令:hdfs dfs -ls / 查看 HDFS 中文件

使用命令:hdfs dfs -mkdir /input 在 HDFS 上创建目录

使用命令:hdfs dfs -put ./test.txt/input 将本地文件上传到 HDFS 指定目录

使用命令:hdfs dfs -get /input/test.txt ./tmp 将 HDFS 文件复制到本地目录

使用命令:hdfs dfs -text /input/test.txt 查看 HDFS 上的文本文件

43a668b220ba7e8d81e4c1faec50c79d.png

web 端浏览 HDFS 目录

3a385b19b8d8b68187d14dbcca3fdd4b.png

3.4 验证 MapReduce 的 wordcount 案例

(1)先通过命令将带有文本内容的 test2.txt 文件上传到 HDFS

(2)对 HDFS 上 test2.txt 文件执行 wordcount 统计,结果放回 HDFS 新目录,命令:

hadoop jar /usr/local/hadoop/hadoop-3.3.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /input/test2.txt /out

45c362f29d21c508ed5da01f3d3c5264.png

343ed0b020fd38405fb81b4a571148bd.png

四、Spark 安装与部署

4.1 安装 Scala

(1)安装 scala

上传 scala 压缩包解压,使用命令:

scala -version 查看当前环境变量下的 scala 版本

94fb82703f2ce777df1e9a34fc222ef2.png

(2)拷贝 scala 目录和环境变量到其他两台机器

使用命令:

scp -r /usr/local/scala root@slave1:/usr/local/

scp /etc/profile root@slave1:/etc/profile

354a5888a2586f6899f6e0d7bb6ad1b9.png

4.2 安装 Spark

(1)上传 spark 压缩包解压,修改配置文件

命令:vim
/usr/local/spark/spark-3.3.1/conf/spark-env.sh

(2) 新建 worker 目录,写入 master 机器名称

4.3 启动 Spark

(1)在 master 的 spark 安装目录下启动 spark

命令:

cd /usr/local/spark/spark-3.3.1/sbin

./start-all.sh

6e6e5ce10813eed84e6dbab1e6841a7e.png

(2)在 slave1 同样目录启动 master 进程

命令:./start-master.sh

a0b53383eb552cb8e57abdfd603c6109.png

(3)访问 spark 管理页面 ui

db913110c4cd09526a1d5d82a1f891e4.png

4.4 验证 Spark 的 wordcount 案例

(1)执行命令:

cd /usr/local/spark/spark-3.3.1/bin

./spark-shell --master spark://master:7077

a65ef724ea34ab3a43bc8cedf9545283.png

(3)从 HDFS 读取数据执行自定义 wordcount 代码,结果写入 HDFS,命令:

sc.textFile("hdfs://master:9000/input/test2.txt").flatMap(_.split(" ")).map(word=>(word,1)).reduceByKey(_+_).map(pair=>(pair._2,pair._1)).sortByKey(false).map(pair=>(pair._2,pair._1)).saveAsTextFile("hdfs://master:9000/spark_out")

(4)输出结果:

213b3b0dbefa1cd60d38df459f5a29c9.png

五、后记

大数据技术日新月异,得益于互联网技术加持下的商业和工业模式变革。人们日益增长的对生活生产便捷性、数字化、智能化的需求,催生了数据爆炸式的增长,推动了大数据技术推陈出新。作为新时代的程序开发者,必须掌握一定的大数据基础知识才能适应时代的要求,本文只是一个引子,从自身实践的角度帮助初学者认识大数据,并基于此搭建自己属于自己的开发环境,希望大家能够在此基础上继续钻研有所建树。

-end-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值