首页 > 其他分享 >Hadoop3.1.3+Spark2.3.4全分布决策树

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

时间:2024-04-07 18:11:07浏览次数:22  
标签:hadoop Hadoop3.1 Spark2.3 master HOME home export root 决策树

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

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
大功告成啦!!!!!!!!!

标签:hadoop,Hadoop3.1,Spark2.3,master,HOME,home,export,root,决策树
From: https://www.cnblogs.com/dxlindex/p/18113574

相关文章

  • 经典机器学习算法:线性回归。逻辑回归。决策树。支持向量机(SVM)。朴素贝叶斯(Naive Baye
    目录经典机器学习算法分别举例说明这些算法的应用,并对比优劣以及实际应用场景。......
  • 树模型系列——1、决策树算法简介
    1.决策树简介决策树(decisiontree)是机器学习中一种非参数的监督学习算法,可用于分类与回归。其中分类决策树是基于变量特征对离散变量目标值进行分类的,可用于二分类或多分类;回归决策树是基于变量特征对连续变量目标值进行分类的,可用于连续变量的回归拟合。从上图看,可知树形结构......
  • 1.7 - 决策树
    1.模型理念香农信息论:一个系统越是混乱,信息熵越高,系统越是有序,信息熵越低。S= ∑(-plog(p)),因此,系统内变量越多,信息熵越大,变量之间出现的概率越平均,信息熵越大。在银行借贷决策模型中,判定一个人是否可以借贷,每个选中这个人的一个特征数据进行判断,然后再上次判断......
  • 【机器学习】决策树学习下篇(详解)
    引言在当今数据驱动的时代,机器学习技术已成为解决复杂问题不可或缺的工具。其中,决策树学习作为一种基础且强大的算法,广泛应用于各种领域,包括但不限于金融风控、医疗诊断、客户关系管理等。决策树以其简单直观、易于理解和实现的特点,受到了数据科学家和业界专家的青睐。过拟合......
  • 决策树模型(3)决策树的生成与剪枝
    决策树的生成有了信息增益和信息增益比,我就可以以此衡量特征的相对好坏,进而可以用于决策树的生成。相对应的基于信息增益计算的方法所生成的决策树的算法我们叫做ID3算法,而基于信息增益的算法我们叫做C4.5,二者唯一的区别就在于一个使用信息增益衡量特征好坏而另外一个使用信息增......
  • 决策树模型(2)特征选择
    特征选择特征选择问题特征选择顾名思义就是对特征进行选择性截取,剔除掉冗余特征。这样能够减少决策树的复杂度。比如在上面两图中,左图通过年龄来对样本进行分类,而右图通过工作对特征进行分类,二者究竟孰好孰坏,这是需要进行比较的。一个非常直接的想法就是仅用选择的特征去训练......
  • 机器学习之决策树现成的模型使用
    目录须知DecisionTreeClassifiersklearn.tree.plot_treecost_complexity_pruning_path(X_train, y_train)CART分类树算法基尼指数 分类树的构建思想对于离散的数据对于连续值剪枝策略剪枝是什么剪枝的分类预剪枝后剪枝后剪枝策略体现之威斯康辛州乳腺癌数据......
  • 决策树学习-计算数据集的信息熵
    #计算信息熵defcalEntro(dataset):dataset=np.array(dataset)data_len=len(dataset)#labelCount记录各类样本数据的数量labelCount={}forrowindataset:cur_label=row[-1]ifcur_labelnotinlabelCount.keys():......
  • 数据分享|R语言使用核Fisher判别方法、支持向量机、决策树与随机森林研究客户流失情况
    全文链接:https://tecdat.cn/?p=35438原文出处:拓端数据部落公众号分析师:JiaojiaoZhao现在,越来越多的人意识到预测客户的流失与否是一件非常重要的事情。而且比较值得注意的是,留住原有的客户是要比吸引新客户更加容易的,而且成本更低。客户的流失可以从三个不同的方面来考虑。首......
  • 决策树模型(1)总体介绍
    决策树总体介绍决策树模型顾名思义就是通过一条条的决策来将样本划分来从而达到分类或回归的目的。决策树模型呈树形结构,下图粗略展示了一个分类决策树其中圆表示特征,方块表示叶子节点也是最终分类的类别,我们通过利用样本中高价值的特征(房子拥有情况,工作的拥有情况)来构建这......