惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
腾讯CDC
L
LangChain Blog
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
量子位
Apple Machine Learning Research
Apple Machine Learning Research
Cloudbric
Cloudbric
B
Blog RSS Feed
B
Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
S
Schneier on Security
Project Zero
Project Zero
宝玉的分享
宝玉的分享
美团技术团队
MyScale Blog
MyScale Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
T
Threatpost
A
Arctic Wolf
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
爱范儿
爱范儿
Recorded Future
Recorded Future
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
SecWiki News
SecWiki News
H
Hacker News: Front Page
AWS News Blog
AWS News Blog
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
C
Check Point Blog
L
Lohrmann on Cybersecurity
F
Full Disclosure
TaoSecurity Blog
TaoSecurity Blog
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
Martin Fowler
Martin Fowler

风萧古道 - 勤学苦练,年复一年

游戏服务器开发经验(五)应对复杂需求 沉浸式体验东汉末年生活 - 《真三国无双 起源》玩后感 怒其不争!致2025年HLTV的Top18-NiKo Linux家用服务器维护指南 游戏服务器开发经验(四)避免写Bug的习惯、技巧和心态 游戏服务器开发经验(三)线上维护 游戏服务器开发经验(二)避免内存泄露 游戏服务器开发经验(一)道具防刷 35岁找不到工作,绝对不会是软件开发人员的结局 用爱发电项目开发两个月的心得体会 以魏延“子午谷奇谋”讨论软件需求可行性问题 MQTT协议中可变长度的具体计算方式(有计算过程解析) 关于游戏服务器配置表功能的探讨 Java并发编程中上锁的几种方式 如何用C++分割一个字符串? CSAPP第二章-信息的表示与处理 我的自我介绍 Windows XP虚拟机中文版无需激活下载 Java TreeSet的一些用法和特性 Linux C++ Socket实战 传统软件服务器与游戏服务器架构区别 独立个人项目开发心得 - 任务切分、挑战性、实用性和半途而废 使用Python实现简单UDP Ping 使用Python开发一个简单的web服务器 Kotlin手动实现一个最简单的哈希表 Kotlin实现二叉堆、大顶堆、优先级队列 Springboot操作MongoDB,包括增改查及复杂操作 Unison在Linux下的安装与使用 Java实现类似WINSCP访问远程Linux服务器,执行命令、上传文件、下载文件 一个被废弃的项目——自动爬取信息然后发给我自己邮箱上 Python连接MongoDB和Oracle实战 MongoDB常用查询语句 vue和springboot项目部署到Linux服务器 Python的一些用法(可能不定时更新) java正则表达式 - 双反斜杠(\)和Pattern的matches()与find() 简述爬虫对两种网站的不同爬取方式 Vue的路由配置及手动改地址栏为啥又跳转回来?? [JavaScript]JS基础知识 [Mybatis]逆向工程中Select语句查询不出‘TEXT’字段 [编译原理]FIRST、FOLLOW和SELECT [Spring]Spring学习笔记 [算法]分布估计算法 - 一种求解多维背包问题的混合分布估计算法_王凌 [日常]我做独立博客的原因 人间值得 深入理解计算机系统 想想就开心! 最重要的事,只有一件 藏书 被讨厌的勇气 关于 简历 朋友 尊重自己:给予与接收的心灵艺术
搭建Spark实战环境(3台linux虚拟机集群)(一)样板机的搭建
JonathanLin · 2020-05-23 · via 风萧古道 - 勤学苦练,年复一年

系统及软件配置

系统配置

内存:16g 2400 cpu:i5 9400F

软件配置

  • Windows 10 1903版本
  • VMware workstation 15.10
  • CentOS centos-release-7-7.1908.0.el7.centos.x86_64
  • Java jdk-8u241-linux-x64.tar.gz
  • Scala scala-2.11.8.tgz

值得一提的是,win10 1903版本与VMware 15.10之前的版本不兼容,会出现卡死(虚拟机繁忙)的问题,该问题在15.10版本解决。 资源来源于网络: VMware 15.10 链接:https://pan.baidu.com/s/1bpF3M1V3qPydQgGl-hUC1g 提取码:sb8t CentOS 7.7 链接:https://pan.baidu.com/s/1xFOlCvNrmXXwciVNOL2Pew 提取码:wxdx Java jdk-8u241-linux-x64.tar.gz 链接:https://pan.baidu.com/s/1E1TyObvyO6iQUW44lTCqDQ 提取码:6xw9 Scala scala-2.11.8.tgz 链接:https://pan.baidu.com/s/1TQB-wnffHh0i2aqzzfSi6A 提取码:iowh

安装前的准备

查看Windows下的网络配置

以Windows 10 1903为例(windows下控制台输入“winver”可以看自己windows版本),在控制面板->网络和Internet->网络连接中,可以看到本机上的网络配置。本次搭建这个集群,我们需要虚拟机和物理机(也就是windows)共用一个网络,所以需要使用桥接模式。 本人电脑联网时使用的是这个WLAN 2,它使用的网卡是Realtek 8821AE …. 的,记住这个名字。

配置VMware 虚拟网络编辑器

使用管理员权限打开VMware,菜单栏的编辑->虚拟网络适配器:将桥接模式的“桥接到”指向刚才记下的Realtek 8821AE,点击确定保存配置。 同时还要记住我WLAN 2这张网卡的网络配置信息:(windows cmd输入ipconfig查看)

集群及网络配置

根据刚才WLAN 2网络配置信息可知,我的虚拟机的网卡只能配置为192.168.3.***。 你得根据自己网卡上的网络配置去修改虚拟机网卡配置。

序号IP地址机器名运行进程核数/内存用户名
1192.168.3.30masterNN/SNN/DN/RM
Master/Worker
1核/3Gspark
2192.168.3.31slave1DN/NM/Worker1核/2Gspark
3192.168.3.32slave2DN/NM/Worker1核/2Gspark
用到的目录:
/app,/app/soft,/app/compile,/app/spark,/home/spark

开始安装

搭建集群样板机

在VMware中安装CentOS

新建虚拟机

菜单栏,文件->新建虚拟机 选择刚才下载的CentOS镜像: 一路下一步到这里,点击“自定义硬件”把内存调成3G,网络适配器调成桥接模式,然后完成并启动。 按↑键,选中Install CentOS 7,再按Enter键开始安装。

安装CentOS 7

选择语言简体中文后,进入到这个界面: 点击这个“软件选择”,进入选择界面: 勾选GNOME桌面,然后自定义勾选需要的附加选项,我这里只选了“兼容性程序库”和“系统管理工具”,之后如果有缺少软件的话,之后再补装就好。点击左上角完成。 选择网络和主机名,可以配置网络。

配置网络

打开以太网的连接,然后点击“配置”,切到IPv4设置,输入刚才我定义的第一台虚拟机的ip地址192.168.3.30,子网掩码255.255.255.0,网关和物理机windows一样192.168.3.1(见前文),最后附加DNS服务器填入谷歌提供的8.8.8.8。 然后点一下安装位置,选择自动分区,再回来就可以点“开始安装”了。

设置用户

安装过程中,可以设置root和用户,简单设置吧以免忘记密码。 以下是我设置的root和用户(仅做学习之用,也以防忘记密码):

用户密码
rootroot
sparkspark
由于密码太过简单,我们需要多按一次左上角的“完成”。
值得一提的是,如果不在这里设置root和用户,在安装结束后设置的话,系统会要求你设置比较复杂的密码。
静静等待其安装完。

重启,然后接受许可证,点完成,使用spark用户登录,再简单配置下,就正式进入系统。

测试网络

点击应用程序->Firefox,然后访问百度,如果成功则网络连接正常。

设置机器名

用root使用vi /etc/sysconfig/network中设置内容如下:

NETWORKING=yes
HOSTNAME=master

至此,CentOS安装完成。

设置Host映射文件

/etc/hosts内保存了网址域名/机器名与其对应的ip地址建立关联的一个“数据库”,我们根据集群规划配置: 以root的身份(先su root然后输入root的密码)在命令行用#vi /etc/hosts打开配置文件,然后按小写字母i,输入以下内容然后按Esc + :wq回车保存:

192.168.3.30 master
192.168.3.31 slave1
192.168.3.32 slave2

设置完毕后,用#ping master看看master是否连通及检测服务器响应速度。

关闭防火墙和SELinux

关闭防火墙和SELinux的原因在于Hadoop和Spark运行过程中需要使用端口进行通信,而这些安全设施会阻拦。关闭方法: 关闭iptables时,使用root登录,在命令行终端使用#service iptables status查看iptables状态,如果显示“iptables: Firewall is not running”则iptables已关闭,如果显示iptables的配置信息,则使用如下命令关闭iptables:

同样,用root用户在终端使用#vi /etc/SELinux/config打开配置文件,设置SELINUX=disable,注意需要重启才生效。 然而在我们虚拟机上并没有iptables: SELinux设置为disable。

配置运行环境

更新OpenSSL

CentOS自带的OpenSSL存在bug,所以我们使用如下命令更新

当然了我自己跑了一下并没有看到需要更新,也许centos7修复了。

修改OpenSSH配置

在集群环境中需要SSH进行免密码登录,需要修改OpenSSH配置文件,确认使用RSA算法进行公钥加密并确认私钥存放文件等,需要使用root用户,使用vi /etc/ssh/sshd_config打开配置文件,打开以下三个配置项: 保存修改后使用systemctl restart sshd.service重启服务。

将用户spark加入sudoers中

后面执行中需要使用sudo命令,故将spark加入sudoers文件中,先修改配置文件的权限:chmod u+x /etc/sudoers,再使用vi /etc/sudoers打开文件,在root ALL=(ALL)ALL后加入:

他虽然说是只读,但是你可以用root编辑,然后使用wq! 加感叹号保存。

创建运行环境所需要的目录结构

mkdir /app
chown -R spark:spark /app
mkdir /app/soft
mkdir /app/compile
mkdir /app/spark
mkdir -p /home/spark/work
chown -R spark:spark /home/spark/work

安装Java和Spark环境

安装和配置JDK

安装一下vmware tools,然后把jdk的包拖进去,放到/home/spark/work中。(这个找一找centos虚拟机安装vmware tools教程吧) 解压该文件并移动到/app/soft中

cd /home/spark/work
tar -zxf jdk-8u241-linux-x64.tar.gz
mv jdk1.8.0_241 /app/soft
ll /app/soft

然后以root执行vi /etc/profile,设置JDK相关配置如下:

export JAVA_HOME=/app/soft/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存后回到终端,输入source /etc/profile更新全局变量,然后输入java和javac看看是否安装成功。

安装Scala

把scala安装包放入/home/spark/work中。解压该文件并移动到/app/soft中。

cd /home/spark/work
tar -zxf scala-2.11.8.tgz
mv scala-2.11.8 /app/soft
ll /app/soft

然后以root执行vi /etc/profile,设置JDK相关配置如下:

export SCALA_HOME=/app/soft/scala-2.11.8
export PATH=${SCALA_HOME}/bin:$PATH

保存后回到终端,输入source /etc/profile更新全局变量,然后输入scala -version看看是否安装成功。

参考文献