SuperMap WebGPA外部大数据集群摆设实践

打印 上一主题 下一主题

主题 911|帖子 911|积分 2733

SuperMap WebGPA外部大数据集群摆设实践



  •    

    • 特殊说明:

  • 摆设前预备:

    • 1.安装包说明
    • 2. 许可设置
    • 3. 呆板情况

  • 摆设过程说明:

    • 1.设置ip主机名映射(主机ip需要固定ip)
    • 2. 检察防火强状态,关闭防火墙
    • 3. 新建用户,设置免密登录
    • 4. 安装java、scala、hadop、spark包
    • 5.设置hadop设置文件
    • 6.三台呆板创建Hadop所需的数据目录
    • 7. 启动hadop
    • 8. 设置spark参数
    • 9. 三台呆板创建spark所需路径
    • 10. 启动spark集群
    • 11. iserver-GPA使用spark集群
    • 12. 其他启动常见题目

本文主要以三台呆板为例,提供Linux情况下基于Hadoop+Spark摆设超图分布式集群示例,您可以参考以下操纵说明,搭建一个完整可用的超图分布式情况。
特殊说明:

1、本文测试呆板是单网卡,如果情况是双网卡,在设置过程中需要留意的地方有说明。
2、本文不包含zookeeper的安装摆设,如需使用hdfs,摆设zookeeper,在core-site添加如下设置即可
  1. <property>
复制代码
  1.     <name>ha.zookeeper.quorum</name>
复制代码
  1.     <value>m1:2181,m2:2181,m3:2181</value>
复制代码
  1. </property>
复制代码
3、本文hadoop和spark安装在同一个用户下,如需安装到不同的用户,需保证spark用户有hadoop目录的读写权限。
摆设前预备:

1.安装包说明

安装包

版本

形貌

scala-2.12.15.tgz
2.12.15
scala运行情况
jdk-8u144-linux-x64.tar.gz
1.8
java运行情况
spark-3.3.0-bin-hadoop3.tgz
3.3.4
大规模数据处置惩罚
hadoop-3.3.2.tar.gz
3.3.6
分布式文件体系,告诉运算和存储
jemalloc-compiled.tar
5.3.0
linux优化内存使用
2. 许可设置

SuperMap进行大规模数据分析时,需要每台参与运算的节点设置SuperMap许可。
设置方式:如果您拿到的是许可文件,许可文件拷贝到/opt/SuperMap/License/目录。
3. 呆板情况

呆板

ip地址

呆板名

体系

节点

a
172.16.12.90
test-machine1
centos7
master
b
172.16.14.65
test-machine2
centos7
slave1
c
172.16.13.88
test-machine4
centos7
slave2
本文所测试呆板是单网卡,如果情况是双网卡,在设置过程中需要留意的地方有说明
摆设过程说明:

1.设置ip主机名映射(主机ip需要固定ip)

在root用户下修改,主机ip需要固定ip。
  1. vim /etc/hosts
复制代码
  1. #添加如下
复制代码
  1. 172.16.12.90 test-machine1
复制代码
  1. 172.16.13.88 test-machine4
复制代码
  1. 172.16.14.65 test-machine2
复制代码
如果是双网卡,设置ip和主机名映射需要留意本机和其他呆板采用表里网地址配合的方式,否则可能会出现无法访问,比如:
  1. 网卡一ip 机器名
复制代码
  1. 其他网卡二ip 机器名
复制代码
  1. 其他网卡二ip 机器名
复制代码
2. 检察防火强状态,关闭防火墙

  1. #查看状态
复制代码
  1. systemctl status firewalld.service
复制代码
  1. #关闭防火墙
复制代码
  1. systemctl stop firewalld.service
复制代码
防火墙一样平常在项目应用不会关闭,可以正式项目上线前设置防火墙放行规则,需要罗列用到的端口,将这些端口放行。
3. 新建用户,设置免密登录

 3.1 新建用户supermap,切换到supermap
  1. #新建用户,三台机器
复制代码
  1. useradd supermap 
复制代码
  1. #设置密码,三台机器
复制代码
  1. passwd supermap
复制代码
  1. #切换到supermap用户
复制代码
  1. su supermap
复制代码
3.2 supermap用户设置最大进程数
  1. ulimited -a 查看最大进程数,三台机器
复制代码

  1. 若比较小,需要修改,修改方法如下:
复制代码

3.3 设置免密登录,如果已经是免密登录,可忽略。
  1. #切换用户
复制代码
  1. su supermap
复制代码
  1. #三台机器一路enter生成密钥文件
复制代码
  1. ssh-keygen -t rsa
复制代码
  1. #三台机器,切换到~/.ssh
复制代码
  1. cd ~/.ssh
复制代码
  1. #三台机器,写入公钥
复制代码
  1. cat id_rsa.pub >> authorized_keys
复制代码
  1. #赋权
复制代码
  1. cd ../
复制代码
  1. chmod 700 .ssh
复制代码
  1. chmod 644 .ssh/authorized_keys
复制代码
  1. #test-machine1 交换公钥
复制代码
  1. ssh-copy-id supermap@test-machine2
复制代码
  1. ssh-copy-id supermap@test-machine4
复制代码
  1. #test-machine2 交换公钥
复制代码
  1. ssh-copy-id supermap@test-machine1
复制代码
  1. ssh-copy-id supermap@test-machine4
复制代码
  1. #test-machine4 交换公钥
复制代码
  1. ssh-copy-id supermap@test-machine1
复制代码
  1. ssh-copy-id supermap@test-machine2
复制代码
  1. #三台机器将hosts信息写入known_hosts
复制代码
  1. ssh test-machine1
复制代码
  1. exit
复制代码
  1. ssh test-machine2
复制代码
  1. exit
复制代码
  1. ssh test-machine4
复制代码
  1. exit
复制代码
  1. #测试 test-macine1机器,没有密码可以登录
复制代码
  1. ssh test-machine2
复制代码
  1. exit
复制代码
  1. ssh test-machine4
复制代码
  1. exit
复制代码
  1. #测试 test-macine2机器,没有密码可以登录
复制代码
  1. ssh test-machine1
复制代码
  1. exit
复制代码
  1. ssh test-machine4
复制代码
  1. exit
复制代码
  1. #测试 test-macine4机器,没有密码可以登录
复制代码
  1. ssh test-machine1
复制代码
  1. exit
复制代码
  1. ssh test-machine2
复制代码
  1. exit
复制代码
4. 安装java、scala、hadoop、spark包

hadoop、spark的参数设置只需要在test-machine1解压,设置完了之后往其他两台分发即可。
4.1 三台呆板上传文件并解压包。上传包到目录/data/bigdata,确保文件路径有supermap用户权限。
#切换用户
  1. su supermap
复制代码
  1. #解压hadoop包,test-machine1机器
复制代码
  1. tar -xvzf hadoop-3.3.2.tar.gz
复制代码
  1. #解压spark包,test-machine1机器
复制代码
  1. tar -xvzf spark-3.3.0-bin-hadoop3.tgz
复制代码
  1. #解压java包
复制代码
  1. tar -xvzf jdk-8u144-linux-x64.tar.gz
复制代码
  1. #解压scala包
复制代码
  1. tar -xvzf scala-2.12.15.tgz
复制代码
  1. #上传包libjemalloc解压并且有supermap权限
复制代码
4.2 三台呆板添加情况变量。
  1. #切换root用户
复制代码
  1. su root
复制代码
  1. #创建环境变量sh文件
复制代码
  1. touch /etc/profile.d/supermap.sh
复制代码
  1. vim supermap.sh
复制代码
  1. #scala和java路径
复制代码
  1. export JAVA_HOME=/data/bigdata/jdk1.8.0_144
复制代码
  1. export SCALA_HOME=/data/bigdata/scala-2.12.15
复制代码
  1. export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$SCALA_HOME/bin
复制代码
  1. #hadoop环境变量
复制代码
  1. export HADOOP_HOME=/data/bigdata/hadoop-3.3.2
复制代码
  1. export HADOOP_HDFS_HOME=$HADOOP_HOME
复制代码
  1. export HADOOP_YARN_HOME=$HADOOP_HOME
复制代码
  1. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
复制代码
  1. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
复制代码
  1. export HDFS_DATANODE_USER=supermap
复制代码
  1. #下面这条启动datanode可能会失败,查看日志发现是JSVC_HOME导致的问题,需要去掉
复制代码
  1. #export HDFS_DATANODE_SECURE_USER=supermap
复制代码
  1. export HDFS_NAMENODE_USER=supermap
复制代码
  1. export HDFS_SECONDARYNAMENODE_USER=supermap
复制代码
  1. export YARN_NODEMANAGER_USER=supermap
复制代码
  1. export YARN_RESOURCEMANAGER_USER=supermap
复制代码
  1. #spark环境变量
复制代码
  1. export SPARK_HOME=/data/bigdata/spark-3.3.0-bin-hadoop3
复制代码
  1. #$SPARK_HOME/sbin和HADOOP_HOME/sbin有相同文件,如部署在一个用户,这个路径就不加到环境变量了,后面执行启动加上路径信息部署在不同用户下可以添加
复制代码
  1. export PATH=$PATH:$SPARK_HOME/bin
复制代码
  1. #source使之生效
复制代码
  1. source /etc/profile.d/supermap.sh
复制代码
5.设置hadoop设置文件

以下操纵均supermap用户下test-machine1呆板上操纵,远程拷贝分发到test-machine2和test-machine4,如果呆板路径不一致,需要留意路径的设置。
5.1 设置hadoop-env.sh,添加JAVA_HOME。JAVA_HOME是hadoop运行需要的情况变量。
  1. #切换到supermap用户
复制代码
  1. su supermap
复制代码
  1. cd /data/bigdata/hadoop-3.3.2/etc/hadoop
复制代码
  1. vim hadoop-env.sh
复制代码
  1. #添加如下
复制代码
  1. export JAVA_HOME=/data/bigdata/jdk1.8.0_144
复制代码
  1. export PATH=$PATH:$JAVA_HOME/bin
复制代码
5.2 设置core-site.xml。core-site.xml是hadoop的核心设置文件,主要设置集群全局参数,用于定义体系级别的参数,如HDFS URL、Hadoop的临时目录等。
/data/bigdata/hadoop-3.3.2/etc/hadoop/core-site.xml
  1. <configuration>
复制代码
  1.                <!-- 设置Hadoop的文件系统,由URL指定 -->
复制代码
  1.         <property>
复制代码
  1.                 <name>fs.default.name</name>
复制代码
  1.                 <value>hdfs://test-machine1:9000/</value>
复制代码
  1.         </property>
复制代码
  1.         <!--配置hadoop存储数据目录,路径要足够大,默认/tmp/hadoop-${user.name}-->
复制代码
  1.         <property>
复制代码
  1.                 <name>hadoop.tmp.dir</name>
复制代码
  1.                 <value>/data/bigdata/hadoop-3.3.2/tempData</value>
复制代码
  1.         </property>
复制代码
  1. </configuration>
复制代码
5.3 设置hdfs-site.xml。hdfs-site.xml是HDFS的核心设置文件,主要设置HDFS相干参数,如名称节点和数据节点的存放位置、文件副本的个数、文件读取权限等。
/data/bigdata/hadoop-3.3.2/etc/hadoop/hdfs-site.xml
<configuration>
  1.         <!--指定namenode的页面访问地址和端口-->
复制代码
  1.         <property>
复制代码
  1.                <name>dfs.namenode.http-address</name>
复制代码
  1.                <value>test-machine1:9870</value>
复制代码
  1.         </property>
复制代码
  1.         <!--指定datanode数节点位置-->
复制代码
  1.         <property>
复制代码
  1.                <name>dfs.datanode.data.dir</name>
复制代码
  1.                <value>/data/bigdata/hadoop-3.3.2/dfsData/datanode</value>
复制代码
  1.                <final>true</final>
复制代码
  1.         </property>
复制代码
  1.         <!--指定namenode元数据存放位置-->
复制代码
  1.         <property>
复制代码
  1.                <name>dfs.namenode.dir</name>
复制代码
  1.                <value>/data/bigdata/hadoop-3.3.2/dfsData/namenode</value>
复制代码
  1.                <final>ture</final>
复制代码
  1.         </property>
复制代码
  1.         <!--指定SecondaryNameNode的主机和端口-->
复制代码
  1.         <property>
复制代码
  1.                <name>dfs.namenode.secondary.http-address</name>
复制代码
  1.                <value>test-machine2:9868</value>
复制代码
  1.         </property>
复制代码
  1.      <!--指定namenode的edits文件的存放位置-->
复制代码
  1.         <property>
复制代码
  1.                 <name>dfs.namenode.edits.dir</name>
复制代码
  1.                 <value>/data/bigdata/hadoop-3.3.2/dfsData/namenode_edits</value>
复制代码
  1.         </property>
复制代码
  1.           <!--配置检查点目录-->
复制代码
  1.         <property>
复制代码
  1.                 <name>dfs.namenode.checkpoint.dir</name>
复制代码
  1.                 <value>/data/bigdata/hadoop-3.3.2/dfsData/namenode_checkpoint</value>
复制代码
  1.         </property>
复制代码
  1.         <property>
复制代码
  1.                 <name>dfs.namenode.checkpoint.edits.dir</name>
复制代码
  1.                 <value>/data/bigdata/hadoop-3.3.2/dfsData/namenode_checkpoint_edits</value>
复制代码
  1.         </property>
复制代码
  1.         <!--文件切片的副本个数-->
复制代码
  1.         <property>
复制代码
  1.                <name>dfs.replication</name>
复制代码
  1.                <value>2</value>
复制代码
  1.         </property>
复制代码
  1.         <!--设置hdfs的文件权限-->
复制代码
  1.         <property>
复制代码
  1.                <name>dfs.permissions</name>
复制代码
  1.                <value>false</value>
复制代码
  1.         </property>
复制代码
  1.         <!--设置DataNode的节点文件配置,3.0版本之前workers为slaves文件-->
复制代码
  1.         <property>
复制代码
  1.                <name>dfs.hosts</name>
复制代码
  1.                <value>/data/bigdata/hadoop-3.3.2/etc/hadoop/workers</value>
复制代码
  1.         </property>
复制代码
  1.        <!--datanode使用hostname进行通讯,必须有-->
复制代码
  1.     <property>
复制代码
  1.         <name>dfs.client.use.datanode.hostname</name>
复制代码
  1.         <value>true</value>
复制代码
  1.      <description>Whether clients should use datanode hostnames when
复制代码
  1.                         connecting to datanodes.</description>
复制代码
  1.     </property>
复制代码
  1. </configuration>
复制代码
5.4 设置mapred-site.xml。mapred-site.xml是MapReduce的核心设置文件,包括JobHistory Server和应用程序参数两部门,如reduce任务的默认个数、任务所可以或许使用内存的默认上下限等。
/data/bigdata/hadoop-3.3.2/etc/hadoop/mapred-site.xml
<configuration>
  1.         <!--指定分布式使用的框架是yarn-->
复制代码
  1.         <property>
复制代码
  1.                <name>mapreduce.framework.name</name>
复制代码
  1.                <value>yarn</value>
复制代码
  1.         </property>
复制代码
  1.         <!--开启MapReduce小任务模式-->
复制代码
  1.         <property>
复制代码
  1.                <name>mapreduce.job.ubertask.enable</name>
复制代码
  1.                <value>true</value>
复制代码
  1.         </property>
复制代码
  1.         <!--设置历史任务的主机和端口-->
复制代码
  1.         <property>
复制代码
  1.                <name>mapreduce.jobhistory.address</name>
复制代码
  1.                <value>test-machine1:10020</value>
复制代码
  1.         </property>
复制代码
  1.         <!--设置网页访问历史任务的主机和端口-->
复制代码
  1.         <property>
复制代码
  1.                <name>mapreduce.jobhistory.webapp.address</name>
复制代码
  1.                <value>test-machine1:19888</value>
复制代码
  1.         </property>
复制代码
  1.       <!--以下HADOOP_MAPRED_HOME必须要有-->
复制代码
  1.       <property>
复制代码
  1.           <name>yarn.app.mapreduce.am.env</name>
复制代码
  1.           <value>HADOOP_MAPRED_HOME=/data/bigdata/hadoop-3.3.2</value>
复制代码
  1.       </property>
复制代码
  1.       <property>
复制代码
  1.            <name>mapreduce.map.env</name>
复制代码
  1.            <value>HADOOP_MAPRED_HOME=/data/bigdata/hadoop-3.3.2</value>
复制代码
  1.       </property>
复制代码
  1.       <property>
复制代码
  1.            <name>mapreduce.reduce.env</name>
复制代码
  1.             <value>HADOOP_MAPRED_HOME=/data/bigdata/hadoop-3.3.2</value>
复制代码
  1.       </property>
复制代码
  1. </configuration>
复制代码
5.5 设置mapred-env.sh。在该文件中指定JAVA_HOME。
/data/bigdata/hadoop-3.3.2/etc/hadoop/mapred-env.sh

  1. export JAVA_HOME=/data/bigdata/jdk1.8.0_144
复制代码
  1. export PATH=$PATH:$JAVA_HOME/bin
复制代码
5.6 设置yarn-site.xml。用于设置集群资源管理体系参数,设置 ResourceManager,NodeManager 的通信端口,web监控端口等。

  1. <configuration>
复制代码
  1. <!-- Site specific YARN configuration properties -->
复制代码
  1.         <!--设置yarn的主节点位置-->
复制代码
  1.         <property>
复制代码
  1.                <name>yarn.resourcemanager.hostname</name>
复制代码
  1.                <value>test-machine1</value>
复制代码
  1.         </property>
复制代码
  1.         <property>
复制代码
  1.                <name>yarn.nodemanager.aux-services</name>
复制代码
  1.                <value>mapreduce_shuffle</value>
复制代码
  1.         </property>
复制代码
  1.              <property>
复制代码
  1.              <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
复制代码
  1.              <value>org.apache.hadoop.mapred.ShuffleHandler</value>
复制代码
  1.      </property>
复制代码
  1.         <!--该配置项用于提示ResourceManager暴露给Client的地址。Client可以利用这个地址向ResourceManager提交应用程序,也可以用来杀死某个应用程序等。其默认端口是8032,而 URL 是 ResourceManager 的 hostname ,这里是master-->
复制代码
  1.         <property>
复制代码
  1.                <name>yarn.resourcemanager.address</name>
复制代码
  1.                <value>test-machine1:8032</value>
复制代码
  1.         </property>
复制代码
  1.             <!--该配置项用于提示 ResourceManager暴露给ApplicationMaster 的访问地址。后者可以通过该地址从ResourceManager处申请和释放资源,默认端口是 8030-->
复制代码
  1.         <property>
复制代码
  1.                <name>yarn.resoucemanager.scheduler.address</name>
复制代码
  1.                <value>test-machine1:8030</value>
复制代码
  1.         </property>
复制代码
  1.     <!--该配置项用于提示 ResourceManager 暴露给 NodeManager 的地址。后者可以通过该地址向 ResourceManager 发送心跳,也可以拉取到待执行的任务,默认端口是8031-->
复制代码
  1.         <property>
复制代码
  1.                <name>yarm.resourcemanager.resource-tracker.address</name>
复制代码
  1.                <value>test-machine1:8031</value>
复制代码
  1.         </property>
复制代码
  1.     <!--ResourceManager 暴露给管理员的访问地址,后者可以通过该地址向 ResourceManager 发送用于管理目的的各项命令,其默认端口是 8033 -->
复制代码
  1.         <property>
复制代码
  1.                <name>yarn.resourcemanager.admin.address</name>
复制代码
  1.                <value>test-machine1:8033</value>
复制代码
  1.         </property>
复制代码
  1.     <!--ResourceManager 对外暴露的 WebUI 地址,我们稍后就会在浏览器中通过访问该地址来查看集群的各类信息,其默认端口是 8088-->
复制代码
  1.         <property>
复制代码
  1.                <name>yarn.resourcemanager.webapp.address</name>
复制代码
  1.                <value>test-machine1:8088</value>
复制代码
  1.         </property>
复制代码
  1.              <property>
复制代码
  1.              <name>yarn.nodemanager.resource.memory-mb</name>
复制代码
  1.              <value>4096</value>
复制代码
  1.      </property>
复制代码
  1. </configuration>
复制代码
5.7 设置workers。文件内里记载的是集群主机名 dfs.hosts。
/data/bigdata/hadoop-3.3.2/etc/hadoop/workers

  1. test-machine1
复制代码
  1. test-machine2
复制代码
  1. test-machine4
复制代码
5.8 分发hadoop设置文件到test-machine2和test-machine3。
  1. scp $HADOOP_HOME/etc/hadoop/* supermap@test-machine2:$HADOOP_HOME/etc/hadoop
复制代码
  1. scp $HADOOP_HOME/etc/hadoop/* supermap@test-machine4:$HADOOP_HOME/etc/hadoop
复制代码
6.三台呆板创建Hadoop所需的数据目录

以上设置的目录结构如下:

  1. #根据实际配置路径创建
复制代码
  1. mkdir -p $HADOOP_HOME/tempData
复制代码
  1. mkdir -p $HADOOP_HOME/dfsData
复制代码
  1. mkdir -p $HADOOP_HOME/dfsData/datanode
复制代码
  1. mkdir -p $HADOOP_HOME/dfsData/namenode
复制代码
  1. mkdir -p $HADOOP_HOME/dfsData/namenode_edits
复制代码
  1. mkdir -p $HADOOP_HOME/dfsData/namenode_checkpoint
复制代码
  1. mkdir -p $HADOOP_HOME/dfsData/namenode_checkpoint_edits
复制代码
7. 启动hadoop

  1. #初始化hadoop,格式化namenode ,只进行一次,下次启动直接执行start-all.sh即可
复制代码
  1. hadoop namenode -format
复制代码
  1. #启动hadoop
复制代码
  1. start-all.sh
复制代码
jps查抄test-machine1

test-machine2

test-machine4

http://172.16.12.90:8088/cluster

8. 设置spark参数

8.1 test-machine1设置spark-env.sh
  1. cd /data/bigdata/spark-3.3.0-bin-hadoop3/conf
复制代码
  1. cp spark-env.sh.template spark-env.sh
复制代码
  1. vim spark-env.sh 添加如下
复制代码
  1. [/code] [code]export SPARK_LOCAL_IP=test-machine1
复制代码
  1. export SPARK_MASTER_HOST=test-machine1
复制代码
  1. export SPARK_MASTER_PORT=7077
复制代码
  1. #如果机器只给集群用,推荐设置机器核数的70%,否则根据应用情况进行动态调整,可以设置一半
复制代码
  1. export SPARK_WORKER_CORES=4 
复制代码
  1. #如果机器只给集群用,推荐设置机器内存的70%,否则根据剩余内存进行动态调整,可以设置50%
复制代码
  1. export SPARK_WORKER_MEMORY=4g 
复制代码
  1. #在集群执行过程中会产生比较大的临时文件,以下两个目录要设置比较大的路径,不在$SPARK_HOME也可以,但是要注意文件夹不要被删除了
复制代码
  1. export SPARK_LOCAL_DIRS=/data/bigdata/spark-3.3.0-bin-hadoop3/tmpData
复制代码
  1. export SPARK_WORKER_DIR=/data/bigdata/spark-3.3.0-bin-hadoop3/worker
复制代码
  1. [/code] [code]export JAVA_HOME=/data/bigdata/jdk1.8.0_144
复制代码
  1. #scala
复制代码
  1. export SCALA_HOME=/data/bigdata/scala-2.12.15
复制代码
  1. #hadoop config folder Hadoop配置文件路径
复制代码
  1. export HAD00P_HOME=/data/bigdata/hadoop-3.3.2
复制代码
  1. export HADOOP_CONF_DIR=$HAD00P_HOME/etc/hadoop
复制代码
  1. [/code] [code]#超图组件产品
复制代码
  1. export SUPERMAP_OBJ=/home/supermap/iobjects/1111/bin
复制代码
  1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SUPERMAP_OBJ
复制代码
  1. [/code] [code]#用于调优的参数,优化linux内存效率,库需要supermap权限,根据实际路径进行设置
复制代码
  1. export LD_PRELOAD=/opt/libs/jemalloc/lib/libjemalloc.so.2
复制代码
8.2 设置worker节点。
  1. cp workers.template workers
复制代码
  1. vim workers 添加如下:
复制代码
  1. test-machine1
复制代码
  1. test-machine2
复制代码
  1. test-machine4
复制代码
8.3 分发spark设置文件slave节点test-machine2和test-machine3。
  1. scp spark-env.sh supermap@test-machine2:/data/bigdata/spark-3.3.0-bin-hadoop3/conf/
复制代码
  1. scp spark-env.sh supermap@test-machine4:/data/bigdata/spark-3.3.0-bin-hadoop3/conf/
复制代码
  1. scp workers supermap@test-machine2:/data/bigdata/spark-3.3.0-bin-hadoop3/conf/
复制代码
  1. scp workers supermap@test-machine4:/data/bigdata/spark-3.3.0-bin-hadoop3/conf/
复制代码
8.4 修改test-machine2和test-machine3的SPARK_LOCAL_IP。
  1. vim spark-env.sh
复制代码
  1. 修改
复制代码
  1. export SPARK_LOCAL_IP= 为当前ip
复制代码
9. 三台呆板创建spark所需路径

这一步可以省略,这里进行说明是为了验证路径在supermap用户下是否可以访问,如果supermap用户无访问目录的权限,启动时会报如下路径错误:

以上设置的路径如下

  1. #根据实际配置路径创建
复制代码
  1. mkdir -p $SPARK_HOME/tmpData
复制代码
  1. mkdir -p $SPARK_HOME/worker
复制代码
10. 启动spark集群

由于hadoop/sbin下也有start-all.sh,为了避免冲突,情况变量里加了hadoop的sbin,没有添加spark的sbin,启动spark需要到对应目录下,如果spark和hadoop不是一个用户创建的,并且情况变量是分开的,可以直接执行start-all.sh。
  1. #推荐这种方式
复制代码
  1. cd /data/bigdata/spark-3.3.0-bin-hadoop3/sbin  
复制代码
  1. ./start-all.sh
复制代码
查抄启动状态,test-machine1  jps发现多了两个进程。

test-machine2、test-machine4

http://172.16.12.90:8080/cluster/nodes

11. iserver-GPA使用spark集群

以下操纵认为您已有可供使用的iserver服务。
11.1 iserver-gpa大数据使用方式。
(1)iserver主页面,点击处置惩罚主动化。

(2)根据需要选择您需要的算子。

(3)如下图是读写矢量数据的模子,spark情况根据实际情况进行设置,参数说明见11.2节。

11.2 参数说明和执行模式的区别
(1)集群相干参数说明。
  1. - master:必填参数,集群 master 地址,单机使用请填写 local[K](K代表使用线程数,*代表本机核数),使用集群请填写集群 master 地址,如 spark://127.0.0.1:7077。
复制代码
  1. - appName:必填参数,自定义应用程序名称,如 processing。
复制代码
  1. - settings:使用集群需进行 Spark 属性参数设置,设置格式为 key1=value1, key2=value2,常用参数有:
复制代码
  1.         - spark.executor.cores=4:每个 executor 分配的cpu内核数,分配的内核数越多 executor 并发能力越强,默认设置为4。
复制代码
  1.         - spark.executor.memory=8g:每个 executor 使用的内存量,默认设置为8G。
复制代码
  1.         - spark.driver.cores=4,用于 driver 进程的内核数,**需要注意的是,在Client模式下该参数无法生效**。
复制代码
  1.         - spark.driver.memroy=4g:driver 使用的内存量,默认设置为4G。在写出数据到本地时,如果数据量过大,报错java.lang.OutOfMemoryError,可尝试增大该值。**需要注意的是,在Client模式下该参数无法生效**。
复制代码
  1.         - spark.driver.port=4040:用于 driver 进程的端口,**需要注意的是,在Client模式下该参数无法生效**。
复制代码
  1.         - spark.driver.maxResultSize=1g:所有分区序列化结果的最大值,建议设置为 0 表示无限制。
复制代码
  1.         - spark.kryoserlizer.buffer.max=2000m:Kryo 序列化缓冲区的最大值,设置区间是1~2047MB。设置较大的缓冲区可以提高序列化和反序列化的性能,但也会消耗更多的内存,默认设置为2000MB。
复制代码
  1.         - spark.default.parallelism=2000:用于设置默认并行度,默认设置为2000。
复制代码
  1.         - spark.memory.fraction=0.6:用于执行和存储的内存占(总内存-300MB)的比例。
复制代码
  1.         - spark.network.timeout=3600s:所有网络交互的默认超时时长。
复制代码
更多 Spark 集群的参数设置请参考 [Spark Configuration](https://spark.apache.org/docs/3.3.0/spark-standalone.html)。
(2)不同运行模式的参数区别
--local模式:程序运行在本机
--client模式:Driver 运行于 iServer 所在的服务器,可以访问 iServer 服务器上的本地文件,包括 UDB、UDBX 等。由于Spark上运行的应用(Application)只有一个,因此多任务需要排队执行任务,可能存在延迟。
**留意:Client 模式下所有参数的修改,均需重启 spark 任务才会生效。**
重启步骤: 1. 通过 Spark 的 WebUI(http://{ip}:8080)检察并关闭任务。 2. 返回处置惩罚主动化建模页面执行模子,修改参数即可生效。
  1. - spark.driver.host 在双网卡环境下、本机与集群 IP 不一致环境下,需设置该参数,否则可能出现找不到 driver 的问题,一般填写 iServer 所在服务器地址。示例:127.0.0.1
复制代码
--cluster模式:Driver 在集群的节点上同时运行,不占用 iServer 节点的盘算资源,但无法直接访问 iServer 节点上的文件。通常使用数据库型数据源或共享目录的方式实现多节点数据的同步访问,可以或许最大限度的利用集群。
  1. - gp.hdfs.url(必填)提供一个 hdfs 目录,作为临时存放 jar 文件和模型的目录。示例:hdfs://127.0.0.1:9000/up
复制代码
  1. - gp.appResource 对于没有 hdfs 环境的情况是(必填),支持读取集群本地文件。需要将 iServer产品目录/support/geoprocessing/lib 下的 sps-startup-11.X.X-SNAPSHOT.jar 文件放到集群每个节点的相同文件夹下(建议使用共享目录)。填写该文件的位置,文件路径以file:开头。示例:file:/ssdData/share/sps-startup.jar|
复制代码
  1. - spark.jars 对于没有 hdfs 环境的情况是(必填),支持读取集群本地文件。需要将 iServer产品目录/support/iObjectsForSpark/bdt-all-runtime-11.X.X.jar 文件放到集群每个节点的相同文件夹下。填写该文件的位置,文件路径以file:开头。示例:file:/ssdData/share/bdt-all-runtime.jar|
复制代码
  1. - spark.web.ui.port spark 的 web UI 页面的端口,默认端口为8080。示例:8080
复制代码
11.3 常见题目-处置惩罚bdt分发磁盘占用题目
为了实现依赖文件和日志清算,保证服务器硬盘空间,需要修改Spark目录/conf/spark-env.sh设置文件,增加以下参数:
  1. - spark.worker.cleanup.enabled:是否开启定时清理。
复制代码
  1. - spark.worker.cleanup.interval:清理周期,每隔多长时间检查并清理一次,单位秒。
复制代码
  1. - spark.worker.cleanup.appDataTtl:保留时长,任务结束后保留多久,判断文件是否能够被删除,单位秒。
复制代码
  1. 例如,希望每 60 秒检查一次 worker 目录,并删除执行完成 1 小时后的任务目录。
复制代码
  1. export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=60 -Dspark.worker.cleanup.appDataTtl=3600"
复制代码
12. 其他启动常见题目

12.1 hadoop报错java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/tmp/dfs/data: namenode clu


解决方案1,hadoop所有路径清算,重新format
解决方案2
题目原因
1.namenode格式化次数过多,导致子节点datanode和namenode的CID不一致了
解决方案
1.cat切入hdfs.site.xml检察设置文件的datanode存放在哪个路径
2.切到对应路径hadoop/tmp/dfs/data/current,使用cat进入VERSION文件
3.将日志中的namenode的CID覆盖clusterID
参考文章:hadoop报错java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/tmp/dfs/data: namenode clu_hadoop java.io.ioexception: incompatible clusterid-CSDN博客


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表