Hadoop3.1.3+Spark2.3.4全分布决策树

news/发布时间2024/8/25 6:13:08

该文档是一些配置全分布的注意事项(遇到的坑)与个人的一些指令备注,阅读文档前需要配置好网络,具体可以参考:
网络配置。

linux系统选择的是Centos7

首先是一些小工具:

小技巧

1.Xshell:可以更方便地批量操控虚拟机进行全分布:

alt text
alt text

这样输入任何指令都可以输入给所有虚拟机,方便全分布的配置。

alt text

2.共享文件夹:前提是需要安装VMware Tools,(如图在设置的上面)

共享文件夹可以很方便的在Windows指定一个文件夹挂载到虚拟机上的/mnt/win(没有可以新建一个)文件夹下,
这样在Windows下把想发给虚拟机的文件放到指定的文件夹再输入指令:
/usr/bin/vmhgfs-fuse .host:/ /mnt/win -o subtype=vmhgfs-fuse,allow_other。

注:每次重新打开虚拟机之后都需要输入指令才能开启共享文件夹。

alt text
alt text
我这里选择的是E盘的share2(自建的)文件夹,你可以任意自己选择,上面的名称随意。

参考文章:Centos下虚拟机和物理机如何开启共享文件夹
注:你当然可以使用其他方法比如winscp工具等等……

一些常用指令

查看网络配置文件指令:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

重启网络服务指令:

systemctl restart network

ping baidu.com不行,但是可以ping IP(如192.168.xxx.xxx),则需要修改DNS文件,修改完不要忘记重启网络服务:

vim /etc/resolv.conf

我这里添加的是如图:
alt text

全分布必备技能:克隆虚拟机

克隆前请注意关闭虚拟机!!!
此处参考了:克隆虚拟机注意事项,如本文不清楚可以见链接。

  1. 右键点击管理 --> 克隆 --> 创建完整克隆 -->名称、位置按个人来定

  2. 修改 MAC 地址,一般克隆完成后,虚拟机的网卡 MAC 地址会自动改变的,如果没有自动改变,可以手动修改。点击虚拟机设置,如图alt text

  3. 修改 UUID,UUID 克隆虚拟机后一般是一样的,需要进行修改。
    输入命令 uuidgen,将生成的 UUID 写入 ifcfg-ens33。

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    alt text

  4. 修改 ip 地址(以你的为准)一般如果复制的是192.168.36.130,那么可以将克隆后的ip设置为192.168.36.131即可。
    原理:如图编辑 -->虚拟机网络 --> 点击vmnet8,DHCP设置,如图,只要是起始结束之间的IP均可。alt text

  5. 修改主机名,修改文件 /etc/hosts/etc/sysconfig/network,如下图所示:

    /etc/hosts(注:我这里是全分布)
    alt text
    /etc/sysconfig/network
    alt text

  6. 重启网络,service network restart

ping baidu.com(大功告成!!!)

Spark全分布模式的安装和配置

Spark的安装模式一般分为三种:
1.伪分布模式:即在一个节点上模拟一个分布式环境,master和worker共用一个节点,这种模式一般用于开发和测试Spark程序;
2.全分布模式:即真正的集群模式,master和worker部署在不同的节点之上,一般至少需要3个节点(1个master和2个worker),这种模式一般用于实际的生产环境;
3.HA集群模式:即高可用集群模式,一般至少需要4台机器(1个主master,1个备master,2个worker),这种模式的优点是在主master宕机之后,备master会立即启动担任master的职责,可以保证集群高效稳定的运行,这种模式就是实际生产环境中多采用的模式。
本小节来介绍Spark的全分布模式的安装和配置。

1. 准备Linux环境

准备3台Linux主机,按照下面的步骤在每台主机上执行一遍,我的是如下结果:

master:192.168.36.129  
slave1:192.168.36.131 
slave2:192.168.36.132

以master节点root身份为例:

1.1关闭防火墙

关闭Selinux:
临时关闭:# setenforce 0
永久关闭:# vi /etc/selinux/config
修改其中的参数:SELINUX=disabled,按Esc:qw保存退出。关闭iptables:
安装服务(选做):# yum -y install iptables-services
临时关闭:# systemctl stop firewalld.service
永久关闭:# systemctl disable firewalld.service

(之后操作默认你的三台主机可以ping 通 baidu.com(即网络已经配好,主机名已经配好
方式1:hostnamectl set-hostname master
方式2:vi /etc/hostname
清空内容后写入:master))

1.2主机名和IP的映射关系

此处建议XShell同时操作三台虚拟机
编辑hosts配置文件:# vi /etc/hosts,追加3行:

192.168.36.129  master
192.168.36.130  slave1
192.168.36.131  slave2

每个主机都要测试主机名是否可用:

ping master
ping slave1
ping slave2

1.3三台主机两两免密码登录

  1. 使用ssh-keygen工具生成秘钥对:
    ssh-keygen -t rsa

     私钥:Your identification has been saved in /root/.ssh/id_rsa.  公钥:Your public key has been saved in /root/.ssh/id_rsa.pub.
    
  2. 将生成的公钥发给三台主机:master、slave1、slave2:

     ssh-copy-id -i /root/.ssh/id_rsa.pub root@master  ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave1  ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave2
    
  3. 测试秘钥认证是否成功:

     ssh root@master  ssh root@slave1  ssh root@slave2   
    

直接回车即可登录,不用输入密码,说明免密码登录配置成功。

2. 安装JDK

我这里JDK选择的是jdk1.8.0_271即:jdk-8u271-linux-x64.tar.gz

2.1上传JDK

方式1:通过上述共享文件夹上传到Linux中
方式2:通过linux自带的浏览器下载(左上角应用程序中)

2.2解压JDK安装包

以下所下载的文件均放到/home/hadoop/(主目录)中
tar -zxvf jdk-8u271-linux-x64.tar.gz

2.3配置Java环境变量

在主目录下vi .bash_profile
在文件末尾追加如下内容:

JAVA_HOME=/home/hadoop/jdk1.8.0_271  
export JAVA_HOME  
PATH=$JAVA_HOME/bin:$PATH  
export PATH  
按Esc:wq保存退出,使用source命令使配置文件立即生效:  
source .bash_profile

2.4测试JDK是否安装成功

java -version

3. 安装Hadoop全分布模式

我这里Hadoop选择的是hadoop-3.1.3即:hadoop-3.1.3.tar.gz

3.1 上传Hadoop

方式1:通过上述共享文件夹上传到Linux中
方式2:通过linux自带的浏览器下载(左上角应用程序中)

3.2 解压Hadoop安装包

将下载的文件放到/home/hadoop/(主目录)中
tar -zxvf hadoop-3.1.3.tar.gz

3.3 配置Hadoop环境变量(3台主机上都做一遍)

方式1:可以Xshell批量操作。
方式2:也可以master做完分发到slave1和slave2中。(这里采用方式2)
vim .bash_profile

在文件末尾追加如下内容:
HADOOP_HOME=/home/hadoop/hadoop-3.1.3  
export HADOOP_HOME  
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH  
export PATH  
按Esc:wq保存退出,使用source命令使配置文件立即生效:  
source .bash_profile

3.4 配置Hadoop全分布模式的参数

进入到/home/hadoop/hadoop-3.1.3/etc/hadoop

(1)配置hadoop-env.sh文件:

vim hadoop-env.sh

#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/hadoop/jdk1.8.0_271

(2)配置hdfs-site.xml文件:

vim hdfs-site.xml

<configuration><property>
<name>dfs.replication</name>
<value>2</value>
</property><property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

(3)配置core-site.xml文件:

mkdir /home/hadoop/hadoop-3.1.3/tmp

vim core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.36.129:9000</value>
</property><property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.3/tmp</value>
</property>
</configuration>

(4)配置mapred-site.xml文件:

将模板文件mapred-site.xml.template拷贝一份重命名为mapred-site.xml然后编辑:
cp mapred-site.xml.template mapred-site.xml

vim mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

(5)配置yarn-site.xml文件:

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

(6)配置slaves文件:

vim slaves

slave1
slave2

3.5 对NameNode进行格式化

hdfs namenode -format

3.6 分发安装包给从节点

将master上配置好的Hadoop安装目录分别复制给两个从节点slave1和slave2,并验证是否成功。

cd /home/hadoop

scp -r hadoop-3.1.3/ root@slave1:/home/hadoop/

scp -r hadoop-3.1.3/ root@slave2:/home/hadoop/

3.7 在master上启动Hadoop全分布模式

start-all.sh

启动成功后,使用jps命令查看各个节点上开启的进程:
alt text

stop-all.sh 可以关闭集群

4. 安装VScode

我安装的版本是:code-1.52.1-1608137084.el7.x86_64.rpm
安装命令:

rpm -ivh code-1.52.1-1608137084.el7.x86_64.rpm

此命令中各选项参数的含义为:

-i:安装(install);
-v:显示更详细的信息(verbose);
-h:打印 #,显示安装进度(hash);

5. 安装Python3.6.5

我这里使用的是Python3.6.5.tgz
首先进入主目录
mkdir python3.6
cd python3.6
文件放入此文件夹后解压:
tar -zxvf Python-3.6.5.tgz

安装依赖:

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc
进入解压后的目录:
cd /home/hadoop/Python-3.6.5

编译安装,依次执行以下三行代码:

  1. ./configure --prefix=/usr/local/python3
    其中--prefix是Python的安装目录
  2. make
  3. make install
    出现下图则安装成功!!
    alt text

建立软连接:

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
//输入python3,出现下图所示
alt text

配置环境变量:

进入主目录后输入:
vim .bash_profile
在后面插入:

PYSPARK_PYTHON=python3  
export PYSPARK_PYTHON  
PATH=$PYSPARK_PYTHON/bin:$PATH  
export PATH  

source .bash_profile使配置生效即可。

6. 安装Spark

我们先在master节点上配置好参数,再分发给两个从节点slave1和slave2。

6.1 上传Spark安装包

我使用的是spark-2.3.4-bin-hadoop2.7.tgz

6.2 解压Spark安装包

在主目录中
mkdir spark2
cd spark2
文件放入此文件夹后解压
tar -zxvf spark-2.3.4-bin-hadoop2.7.tgz

6.3 配置Spark环境变量(三台机器都做一遍)

进入主目录后输入:
vim .bash_profile
在后面插入:

SPARK_HOME=/home/hadoop/spark2/spark-2.3.4-bin-hadoop2.7  
export SPARK_HOME  
PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH  
export PATH

注意:由于Spark的命令脚本和Hadoop的命令脚本有冲突(比如都有start-all.sh和stop-all.sh等),
所以这里需要注释掉Hadoop的环境变量,添加Spark的环境变量:
alt text

source .bash_profile使配置生效即可。

6.4 配置Spark参数

cd /home/hadoop/spark2/spark-2.3.4-bin-hadoop2.7/conf/

(1) 配置spark-env.sh文件:

cp spark-env.sh.template spark-env.sh

vim spark-env.sh

export JAVA_HOME=/home/hadoop/jdk1.8.0_271  
export HADOOP_HOOME=/home/hadoop/hadoop-3.1.3  
export HADOOP_CONF_DIR=/home/hadoop/hadoop-3.1.3/etc/hadoop  
export SPARK_MASTER_HOST=master  
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1G

(2) 配置slaves文件:

cp slaves.template slaves

vim slaves
追加两行:

slave1
slave2

6.5 分发安装包给从节点

将master上配置好的Spark安装目录分别复制给两个从节点slave1和slave2,并验证是否成功。
scp -r /home/hadoop/spark2/spark-2.3.4-bin-hadoop2.7/ root@slave1:/home/hadoop/spark2

scp -r /home/hadoop/spark2/spark-2.3.4-bin-hadoop2.7/ root@slave2:/home/hadoop/spark2

6.6 在master节点上启动Spark全分布模式

首先启动hadoop由于注释了hadoop的配置信息,所以需要进入hadoop-3.1.3/sbin目录下使用指令:
./start-all.sh
先启动hadoop
之后启动spark
start-all.sh
关闭的话是先关闭spark
stop-all.sh
再去hadoop-3.1.3/sbin目录下使用指令:
./stop-all.sh
即可。
那么我们开启hadoop、spark集群
alt text
在本机可以登录50070查看hdfs文件系统
alt text
在本机可以登录8080端口查看spark集群运行情况!!
alt text

7. 启动pyspark分布式运行决策树模型

参考pyspark在机器学习中实战小练中的内容实现决策树代码

7.1 首先上传数据集:

创建hdfs文件夹:
hdfs dfs -mkdir -p /user/root
先把数据集下载到linux上再上传数据集adult.csv到hdfs中:
hdfs dfs -put ./adult.csv /user/root/

7.2 启动集群:

以集群的方式启动pyspark:
pyspark --master spark://master:7077
结果如图
alt text
接着输入代码以下仅展示部分代码运行结果:

(数据类型展示)
alt text
(抽取需要的信息)
alt text
(创建决策树模型)
alt text
(运行结果)
alt text
jps
效果如图:
alt text
大功告成啦!!!!!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.liansuoyi.cn/news/04884720.html

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

自定义排序

问题:按照A列的排序依据进行排序 函数公式:=SORTBY(C2:D8,MATCH(C2:C8,A2:A8,))自定义序列排序: 设置自定义序列(如需要): 选取A2:A8》文件》选项》自定义序列》导入 自定义排序:选取数据》数据》排序》自定义排序……次序设置为自定义序列

如何设置有效的屏幕与进程浮水印?

进程浮水印的设置至关重要,主要有以下几个原因:增加警示作用: 进程浮水印能够在进程中浮现出预设的水印,提醒用户当前开启的服务或软件正在访问重要数据。这种警示作用可在一定程度上避免用户无意间泄露敏感信息。防止泄密: 为防止解敏过程中的涉密信息被截屏捕获,进程浮…

IMX6ULL开发板网络环境配置

# 开发板网络配置+1f123252-3539-49b7-ad87-7743b40c3ca4 # 1. 路由器和交换机的区别 路由器和交换机还是有所区别的。如果是使用交换机,则接入网线生成的 IP 是和原宽带的IP 是在同一网段的。如果使用的是路由器,宽带接入 WLAN 口,开发板网线和电脑网线接在LAN 口,则开发板…

【解决方案】多租户技术架构设计入门(一)

多租户的概念是我在毕业后不久进第一家公司接触到的,当时所在部门的业务是计划建设一套基于自研的、基于开放 API 的、基于 PaaS 的、面向企业(ToB)的多租户架构平台,将我们的服务可以成规模地、稳定高效地交付给客户使用。目录前言一、多租户的概念二、隔离模式2.1独立数据…

体验Semantic Kernel图片内容识别

前言前几日在浏览devblogs.microsoft.com的时候,看到了一篇名为Image to Text with Semantic Kernel and HuggingFace的文章。这篇文章大致的内容讲的是,使用Semantic Kernel结合HuggingFace来实现图片内容识别。注意,这里说的是图片内容识别,并非是OCR,而是它可以大致的描…

短视频配音原来如此简单

再回来Ai辅助编程的话题,Ai知道的东西很多,会越来越多,如果提升个人思维能力,如何利用AI 估计很快会成为大部分的程序员了必修课了 没有Ai不会写代码了前两天淘宝购买的IDEA copilot插件的账号不能用,没有Ai的加持感觉不会写代码了。于是启用了尘封好久的通义灵码,也可能…

Python分组数据并保存到单独的文件中

当处理大型数据集时,通常需要将数据分组,并将每个分组的数据保存到单独的文件中。下面是一个使用 Python 中的 pandas 库来实现这一目标的示例代码。 步骤 1: 导入所需的库import os import pandas as pd步骤 2: 读取 Excel 数据# 读取 Excel 数据 df = pd.read_excel("…

[转帖]JVM OOM内存溢出分析实战(基于MAT工具)

https://juejin.cn/post/7342679747636215858?searchId=202404070705500138968B5F69BF68EA87 前言在Java开发与运维过程中,JVM内存管理扮演着至关重要的角色,尤其在面临高性能、大数据量处理的场景时,如何有效防止和解决JVM堆OOM问题显得尤为关键。最近写了一个涉及海量数据…

解决虚拟网卡无法连接到 Internet 问题(之一)

虚拟网卡无法连接到 Internet 的可能情况之一是:网络连接中存在不支持网络连接共享(ICS)的网络连接,可以在 "控制面板\网络和 Internet\网络连接" 中查看是否存在不支持 ICS 的网络连接。 我遇到的情况是我电脑中存在一个名为 “传入的连接” 的网络连接,我不知…

【安全服务系列】-- 勒索病毒处置流程

二、 勒索病毒的应急响应(三)断网隔离被感染的机器,进行以下排查工作:

4 7

使用阿里云服务服务的步骤: 阿里云控制台首页 (aliyun.com) OSS管理控制台 (aliyun.com) RAM 访问控制 (aliyun.com) 密钥是要创建时显示,然后就不在显示在springboot集成redis,会自动向ioc容器中注入对象

SQLAlchemy详解

一、SQLAlchemy介绍SQLAlchemy 是 Python SQL 工具包和对象关系映射器,为应用程序开发人员提供 SQL 的全部功能和灵活性。SQLAlchemy支持SQLite、PostgreSQL、Oracle、MySQL、MariaDB、Microsoft SQL Server等多种数据库。 二、SQLAlchemy安装我安装的版本是:SQLAlchemy==2.0…

2024最新AIGC系统ChatGPT网站源码,GPTs应用,Ai绘画网站源码

SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT语音对话、GPT-4模型、DALL-E3文生图、图片…

吴恩达机器学习-第一周

吴恩达机器学习-第一周 学习视频参考b站:吴恩达机器学习 本文是参照视频学习的随手笔记,便于后续回顾。 机器学习定义 Field of study that gives computers the ability to learn without being explicitly programmed.--Arthur Samuel(1959) 编译了跳棋程序,程序自己下棋迭…

注意力机制 transformer

https://jalammar.github.io/illustrated-transformer/ X就是输入的向量 ,第一步就是创建三个输入向量qkv第二步是计算分数:分数决定了对输入句子的其他部分的关注程度。 分数是通过查询向量与我们要评分的各个单词的键向量的点积来计算的。因此,如果我们处理位置#1中单词的…

nginx反向代理实现不同域名映射到同一台服务器的相同端口

在实际应用中,我们经常会遇到多个域名需要映射到同一台服务器的相同端口的情况,这时可以使用nginx反向代理来实现。 以实现将www.example.com和www.test.com都映射到127.0.0.1的80端口为例,具体步骤如下:修改hosts文件在本地hosts文件中添加以下两行: 127.0.0.1 www.examp…

Photoshop混合模式的底层原理

Photoshop虽然不是什么高手,但平时工作中难免会用到,处理部分需求还是可以胜任的。接触PS这么多年,对PS中图层的混合模式(Blend Mode)一直就处于懵懂状态,即使是看了教材及视频后,有了一点感性认识,但在实际操作中仍旧无法运用起来。直至某一天,我在B站看到韩世麟的《把…

go~在阿里mse上使用redis.call

相关依赖github.com/higress-group/proxy-wasm-go-sdk github.com/alibaba/higress/plugins/wasm-go标准的redis 下面是一个读取redis指定key的方法,使用了higress的wasm-go组件实现的err := config.Client.SMembers("online", func(response resp.Value) {for _, i…

v-show和v-if的区别

v-show可以写在dom标签中,可以根据表达式的true还是false来判断是否显示该标签的内容 v-show是通过css属性的display来控制是否显示的,不删除元素 v-show: 在所写的代码中按住f12选择样式,display被划掉了,元素被显示了 当display勾选的时候,元素不显示了 所以v-show更适…

中文GPTS详尽教程,字节扣子Coze插件使用全输出

今天,斜杠君和大家分享如何在字节扣子Coze中创建插件,并在创建后如何使用这个插件。一、新建插件 首先,进入到插件页面,创建一个插件。 https://www.coze.cn/home点击左侧的个人空间。 在上面选择”插件“标签,来到插件的页面。点击”创建插件“按钮,开始创建。在弹出的…
推荐文章