作者:京东物流 秦彪

工欲善其事必先利其器,在深刻学习大数据相干技术之前,先手动从0到1搭建一个属于本人的本地Hadoop和Spark运行环境,对于持续钻研大数据生态圈各类技术具备重要意义。本文旨在站在研发的角度上通过手动实际搭建运行环境,文中不快人快语过多讲述基础知识,联合Hadoop和Spark最新版本,帮忙大家跟着步骤一步步实际环境搭建。

1. 总体运行环境概览

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

技术名称或工具名称版本备注
Hadoophadoop-3.3.4.tar.gz
VirtualBox6.0.0 r127566虚拟机,举荐
CentOScentos7.3
JDKjdk-8u212-linux-x64.tar.gz1.8.0_111
Zookeeperzookeeper-3.6.tar.gz
FileZillaFileZilla_3.34.0文件传输工具,举荐
MobaXtermMobaXterm_Portable_v10.9SSH连贯工具,举荐
IdeaIDEA COMMUNITY 2019.1.4代码IDE开发工具,举荐

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

主机名IP运行的过程
master192.168.0.20QuorumPeerMain、NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、Master
slave1192.168.0.21QuorumPeerMain、NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、Master、Worker
slave2192.168.0.22QuorumPeerMain、NameNode、DataNode、JournalNode、NodeManager、Worker

(3)过程介绍:(1示意过程存在,0示意不存在)

过程名含意masterslave1slave2
QuorumPeerMainZK过程111
NameNodeHadoop主节点110
DataNodeHadoop数据节点111
ResourceManagerYarn治理过程110
NodeManagerYarn 工作过程111
JournalNodeNameNode同步过程111
DFSZKFailoverControllerNameNode监控过程110
MasterSpark主节点110
WorkerSpark工作节点111

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. 后记

大数据技术突飞猛进,得益于互联网技术加持下的商业和工业模式改革。人们日益增长的对生存生产便捷性、数字化、智能化的需要,催生了数据爆炸式的增长,推动了大数据技术新陈代谢。作为新时代的程序开发者,必须把握肯定的大数据基础知识能力适应时代的要求,本文只是一个引子,从本身实际的角度帮忙初学者意识大数据,并基于此搭建本人属于本人的开发环境,心愿大家可能在此基础上持续钻研有所建树。