作者:京东物流 秦彪
工欲善其事必先利其器,在深刻学习大数据相干技术之前,先手动从 0 到 1 搭建一个属于本人的本地 Hadoop 和 Spark 运行环境,对于持续钻研大数据生态圈各类技术具备重要意义。本文旨在站在研发的角度上通过手动实际搭建运行环境,文中不快人快语过多讲述基础知识,联合 Hadoop 和 Spark 最新版本,帮忙大家跟着步骤一步步实际环境搭建。
1. 总体运行环境概览
(1)软件包及应用工具版本介绍表:
技术名称或工具名称 | 版本 | 备注 |
---|---|---|
Hadoop | hadoop-3.3.4.tar.gz | |
VirtualBox | 6.0.0 r127566 | 虚拟机,举荐 |
CentOS | centos7.3 | |
JDK | jdk-8u212-linux-x64.tar.gz | 1.8.0_111 |
Zookeeper | zookeeper-3.6.tar.gz | |
FileZilla | FileZilla_3.34.0 | 文件传输工具,举荐 |
MobaXterm | MobaXterm_Portable_v10.9 | SSH 连贯工具,举荐 |
Idea | IDEA COMMUNITY 2019.1.4 | 代码 IDE 开发工具,举荐 |
(2)环境部署与散布介绍表:
主机名 | IP | 运行的过程 |
---|---|---|
master | 192.168.0.20 | QuorumPeerMain、NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、Master |
slave1 | 192.168.0.21 | QuorumPeerMain、NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、Master、Worker |
slave2 | 192.168.0.22 | QuorumPeerMain、NameNode、DataNode、JournalNode、NodeManager、Worker |
(3)过程介绍:(1 示意过程存在,0 示意不存在)
过程名 | 含意 | master | slave1 | slave2 |
---|---|---|---|---|
QuorumPeerMain | ZK 过程 | 1 | 1 | 1 |
NameNode | Hadoop 主节点 | 1 | 1 | 0 |
DataNode | Hadoop 数据节点 | 1 | 1 | 1 |
ResourceManager | Yarn 治理过程 | 1 | 1 | 0 |
NodeManager | Yarn 工作过程 | 1 | 1 | 1 |
JournalNode | NameNode 同步过程 | 1 | 1 | 1 |
DFSZKFailoverController | NameNode 监控过程 | 1 | 1 | 0 |
Master | Spark 主节点 | 1 | 1 | 0 |
Worker | Spark 工作节点 | 1 | 1 | 1 |
2. 零碎根底环境筹备
步骤 1:虚拟机中 Linux 零碎装置(略)
VirtualBox 中装置 CentOS7 操作系统
步骤 2:CentOS7 根底配置
(1)配置主机的 hostname
命令:vim/etc/hostname
(2)配置 hosts,命令 vim /etc/hosts
(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 环境变量
(4)复制主机:
1)利用 VirtualBox 复制性能复制两台主机
2)命令:vi
/etc/sysconfig/network-scripts/ifcfg-eth0,设置相应的网络信息
3)三台主机 IP 别离为:192.168.0.20/21/22
(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 环境变量
4)zookeeper 的配置文件批改,zookeeper-3.4.10/conf/
5)执行命令从 master 节点复制配置到其余两个节点
6)每台机器 zookeeper 目录下新建一个 data 目录,data 目录下新建一个 myid 文件,master 主机寄存标识值 1;slave1 主机标识值为 2;slave3 主机标识值为 3
7)每台机器上命令:zkServer.sh start,启动 ZK,过程名:QuorumPeerMain
3. Hadoop 装置与部署
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 环境变量
4)批改配置文件共 6 个:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 和 workers
文件 1:hadoop-env.sh;减少 jdk 环境变量
文件 2:core-site.xml;配置长期目录及 zookeeper 信息
文件 3:hdfs-site.xml;配置 hdfs 信息
文件 4:mapred-site.xml;配置 mapreduce 和 dfs 权限信息
文件 5:yarn-site.xml;配置 yarn 资源调度信息
文件 6: worker 文件寄存以后的 worker 节点名,复制到每一个虚拟机中
3.2 启动 Hadoop
1)应用命令:hadoop-daemon.sh start journalnode 启动 journalnode 过程(每个节点执行)
2)应用命令:hadoop-daemon.sh start namenode 启动 namenode 过程(master、slave1 节点上执行)
3)应用命令:hadoop-daemon.sh start datanode 在所有节点上启动 datanode 过程
4)应用命令:start-yarn.sh 在 master 上启动 yarn
5)应用命令:hdfs zkfc -formatZK 在 ZK 上生成 ha 节点
6)应用命令:hadoop-daemon.sh start zkfc 启动 DFSZKFailoverController 过程,在 master 节点执行
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 节点
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 上的文本文件
web 端浏览 HDFS 目录
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
4. Spark 装置与部署
4.1 装置 Scala
(1)装置 scala
上传 scala 压缩包解压,应用命令:
scala -version 查看以后环境变量下的 scala 版本
(2)拷贝 scala 目录和环境变量到其余两台机器
应用命令:
scp -r /usr/local/scala root@slave1:/usr/local/
scp /etc/profile root@slave1:/etc/profile
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
(2)在 slave1 同样目录启动 master 过程
命令:./start-master.sh
(3)拜访 spark 治理页面 ui
4.4 验证 Spark 的 wordcount 案例
(1)执行命令:
cd /usr/local/spark/spark-3.3.1/bin
./spark-shell –master spark://master:7077
(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)输入后果:
5. 后记
大数据技术突飞猛进,得益于互联网技术加持下的商业和工业模式改革。人们日益增长的对生存生产便捷性、数字化、智能化的需要,催生了数据爆炸式的增长,推动了大数据技术新陈代谢。作为新时代的程序开发者,必须把握肯定的大数据基础知识能力适应时代的要求,本文只是一个引子,从本身实际的角度帮忙初学者意识大数据,并基于此搭建本人属于本人的开发环境,心愿大家可能在此基础上持续钻研有所建树。