安装 CDH5.16.2 + centos7.7 + VM

1.在自己电脑上用VM搭建跟公司一样的CDH集群

 1.1 公司集群的配置清单

index 配置项
1. centos7_x64
2. CDH5.16
3. JDK1.8_181
4. spark2.2.0
5. scala2.11

2.下载

 2.1 centos7.7

https://www.centos.org/download/
选择版本
选择mirror - aliyun
选择mirror - aliyun
选择mirror - aliyun
之后就可以下载centos7了。min版只有900多M,而完全版要4G多,这是影响CDH运行速度的1大原因。

 2.2 jdk

 2.3 CDH

  1. cloudera-manager-centos7-cm5.16.2_x86_64.tar.gz
  2. CDH-5.16.1-1.cdh5.16.2.p0.3-el7.parcel
  3. CDH-5.16.1-1.cdh5.16.2.p0.3-el7.parcel.sha1 ,需要将sha1改名为sha
  4. manifest.json

 2.4 mysql的驱动jar

3.centos7的常用命令,跟6不同的地方

4.创建standard虚拟机,用来提供克隆虚拟机的模板。在standard完成安装前的准备工作。

4.1 虚拟机的资源设置

  • standard虚拟机的资源设置多少无所谓,但如果使用链接克隆,是无法增加硬盘大小的,只能挂载。内存和核数都可以关闭虚拟机后修改。虚拟机的硬盘是用多少占多少,设置的大小仅仅是上限。
  • 仅仅为了最低限度运行
    • 主节点内存起码8G,推荐10G,硬盘起码30G,推荐40G。否则根本不够用,很多服务启动不了,比如mysql。
    • 从节点内存2-3G,硬盘20G即可。
  • 但如果想要在hdfs上存一些大文件,因为hdfs有副本机制,容量要翻倍,所以磁盘要设的高些。
  • 所以standard设置30G,然后主节点用完整克隆,这样可以扩展硬盘,2个从节点可以用链接克隆,实在不够就挂载。当然最方便的就是直接standard设为100G,因为虚拟机的硬盘并不真的占这么大。
    在这里插入图片描述

4.2 安装centos7

跟上面不同的地方,要注意!!!

  • 网络要选nat,不要跟上面选桥接

  • 选择软件时要选min,不要选GUI。选一些基本软件即可。如果安装的是min版系统,这里只有1个选项。

在这里插入图片描述

  • 分区:

  1. 三个必须建立的分区,swap交换分区、boot引导分区、/ 根目录分区,也就是系统分区。

  2. swap 根据物理内存。 用于在系统运行内存不足时提供运算。系统默认分配基本为物理内存的2倍,因为自己电脑内存紧张,虽然设置了8G内存,swap设4G也可以

    小于等于4G物理内存的系统,至少设置2GB的交换分区
    4G~16G物理内存的系统,至少设置4GB的交换分区
    16G~64G物理内存的系统,至少设置8GB的交换分区
    64G~256G物理内存的系统,至少设置16GB的交换分区

  3. boot分区要求很低,最初centos5.x centos6.x 200M就够用。centos7.x的话,系统默认给1G。大一点无所谓的。但是不能太小。boot给200M即可。

  4. 如果不选容量,就是把剩下所有分配给/
    在这里插入图片描述

  • 配置主机名时开启网络,不然一开始ping不同外网,就要到配文中开了。min版的没法从外面复制,可以先用ip addr查看ip,用ftp工具连接来配置,或者用xshell

在这里插入图片描述

4.3 开启并配置网络

4.3.2. 查看网关

在这里插入图片描述

4.3.3. 配置网卡

vi /etc/sysconfig/network-scripts/ifcfg-ens32 #如果是桥接,这里是ens33
TYPE=Ethernet   # 网络类型为以太网
BOOTPROTO=static  # 手动分配ip
NAME=ens32  # 网卡设备名,设备名一定要跟文件名一致
DEVICE=ens32  # 网卡设备名,设备名一定要跟文件名一致
ONBOOT=yes  # 该网卡是否随网络服务启动
IPADDR=192.168.100.100  # 该网卡ip地址就是你要配置的固定IP,如果你要用xshell等工具连接,220这个网段最好和你自己的电脑网段一致,否则有可能用xshell连接失败
GATEWAY=192.168.100.2   # 网关,这2个配置去虚拟机的编辑选项卡中查看
NETMASK=255.255.255.0   # 子网掩码
DNS1=8.8.8.8    # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地址

4.3.4. 打开网络

vi /etc/sysconfig/network
NETWORKING=yes # 网络是否工作,此处一定不能为no

4.3.5. 关防火墙

systemctl stop firewalld # 临时关闭防火墙
systemctl disable firewalld # 禁止开机启动	

4.3.6. 配置windows的hosts

C:\windows\system32\drivers\etc\hosts

4.3.7. 配置hostname

vi /etc/hostname 修改hostname要reboot,否则不生效

4.3.8. 配置hosts

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.100 standard
192.168.100.101 node101
192.168.100.102 node102
192.168.100.103 node103
192.168.100.104 node104
192.168.100.105 node105
192.168.100.106 node106
192.168.100.107 node107
192.168.100.108 node108
192.168.100.109 node109
192.168.100.110 node110

4.3.9. 重启网络服务

systemctl restart network

此时ping www.jd.com,可以ping通。系统就算装完了

4.4 脚本

{1} 设置rrsync同步脚本

  1. yum -y install rsync

  2. 在/usr/local/bin下创建rrsync文件

    #!/bin/bash
    #1 获取输入参数个数,如果没有参数,直接退出
    pcount=$#
    if((pcount==0)); then
    echo no args;
    exit;
    fi
    
    #2 获取文件名称
    p1=$1
    fname=`basename $p1`
    echo fname=$fname
    
    #3 获取上级目录到绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir
    
    #4 获取当前用户名称
    user=`whoami`
    
    #5 循环
    for((host=105; host<108; host++)); do
            echo ------------------- node$host --------------
            rsync -rvl $pdir/$fname $user@node$host:$pdir
    done
    
  3. 权限 chmod 777 rrsync

  4. “bad interpreter” :set fileformat=unix

{2} 设置xcall统一执行

  1. 在/usr/local/bin下创建xcall
    #! /bin/bash	
    for i in node105 node106 node107
    do
        echo --------- $i ----------
        ssh $i "$*"
    done
    
  2. 权限
  3. 追加到~/.bashrc,否则会报命令找不到。
    [root@node105 module]# cat /etc/profile >> ~/.bashrc
    [root@node106 module]# cat /etc/profile >> ~/.bashrc
    [root@node107 module]# cat /etc/profile >> ~/.bashrc
    

4.5 安装jdk

  1. 在/opt下创建software和module文件夹,将jdk文件放到software中
  2. 注意,必须把jdk解压到/usr/java下,或者在cm-server启动脚本中设置JAVA_HOME,否则在启动服务时会报错

    mv的时候,如果目的地的文件夹不存在,会把要移动的目录下的所有内容复制到目的地目录下,而不是以源文件夹的形式
    /usr/java默认没有这个目录,要手动创建

    mkdir -p /usr/java
    tar -xzvf jdk-8u45-linux-x64.tar.gz -C /usr/java/
    chown -R root:root /usr/java/jdk
    vim /etc/profile
    export JAVA_HOME=/usr/java/jdk
    export PATH=${JAVA_HOME}/bin:${PATH}
    source /etc/profile
    

注意!!!:

如果之前设置了JAVA_HOME,现在又要修改,一定勿忘~/.bashrc下要更新,而且还要把原来追加的JAVA_HOME删除,否则CDH服务获取的仍然是之前的JAVA_HOME。JAVA_HOME优先从~/.bashrc取
cat /etc/profile >> ~/.bashrc
vi ~/.bashrc 搜索JAVA_HOME,删除原来写入的。
3. /etc/profile中设置env
4. 分发到其他节点
5. 所有节点source生效

5.5.关闭SELinux

SELinux是linux的安全子系统,用来控制程序访问指定文件,会影响软件安装部署。

vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled

5.6.关闭防火墙

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl enable firewalld.service

5.7.设置linux的优化参数,非必需

  1. CDH官方建议swappiness=1~10,最大限度使用物理内存,然后才用swap交换区

    #	默认值30
    cat /proc/sys/vm/swappiness   
    #	临时修改,重启恢复默认值30
    sysctl -w vm.swappiness=10
    #	永久生效(重启后不恢复)
    echo "vm.swappiness=10" >> /etc/sysctl.conf
    cat /proc/sys/vm/swappiness
    
  2. 禁用hugepage透明大页,因为其可能会使CPU利用率过高
    查看

    [root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
    [always] madvise never
    [root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
    [always] madvise never
    

    上面状态就说明是启动状态,关闭:

    echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.d/rc.local
    echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local
    chmod +x /etc/rc.d/rc.local
    

    然后reboot,再次查看

    [root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]
    [root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag 
    always madvise [never]
    

    说明已经关闭

  3. 修改linux最大文件句柄数(默认是1024)

    ulimit -a #	open files 就是最大句柄数
    vi /etc/security/limits.conf
    #	从文件最后追加
    root soft nofile 65535
    root hard nofile 65535
    * soft nofile 65535
    * hard nofile 65535
    * soft nproc 65535
    * hard nproc 65535
    ulimit -a 
    

5.8 设置yum国内镜像并下载一些必须的软件

  1. https://blog.csdn.net/qq_34224565/article/details/104122356
  2. yum install libxslt-devel -y 为了防止后面安装hue时报错
  3. yum install libxslt-devel -y hue启动报错
  4. yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi hue运行时报错
  5. yum install psmisc -y 防止pstree找不到
  6. yum install -y perl oozie启动报错

此时单个节点上的复用配置已经做完,其余的虚拟机都可以克隆这台standard来避免重复配置

6.复制虚拟机

 修改硬件配置

 修改网卡配文

vi /etc/sysconfig/network-scripts/ifcfg-ens32

 主机名

vi /etc/hostname

 hosts已经配置,不需要修改

7.克隆完之后才能进行的配置

7.1.免密

 {1} 生成公钥和私钥:

[root@node105 .ssh]$ ssh-keygen -t rsa
[root@node106 .ssh]$ ssh-keygen -t rsa
[root@node107 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

 {2} 在3个节点上执行以下3条语句,将公钥拷贝到要免密登录的目标机器上

[root@node105 .ssh]$ ssh-copy-id node105 && ssh-copy-id node106 && ssh-copy-id node107
注意!!!:
在这里插入图片描述
这里一定要显式的输入yes,不能直接回车

7.2.时间同步

https://www.cnblogs.com/lenmom/p/10348150.html
所有节点 yum -y install ntp

$ vim /etc/ntp.conf
...

...

7.3.主节点安装mysql

7.3.1.https://blog.csdn.net/wohiusdashi/article/details/89358071

7.3.2.Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details根据下面的博客,把rm -rf /var/lib/mysql删掉再重启即可。注意是重启,虽然之前启动失败,但也是启动了。

7.3.4.从别的节点复制/usr/lib64/mysql/libmysqlclient.so.18.0.0到主节点的/usr/lib64/mysql/下,并建立同名软连接,防止后面hue报错

7.3.3.mysql57版本相对56做了一些改变

 {1}使用临时密码进入mysql,密码可以使用复制,不用手敲

 {2}修改密码时,默认的密码设置规则要求很高,可以像这篇blog中那样先修改密码设置规则

https://blog.csdn.net/hello_world_qwp/article/details/79551789

set global validate_password_policy=LOW; #只验证密码的长度
set global validate_password_length=4; #注意,这里最小为4,即使设置了3且显示成功。除非关闭密码验证。
#之后就可以顺利的改密码了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
#给指定用户设置可以访问mysql的ip
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges; 

 {3} 设置编码格式,通过修改/etc/my.cnf,默认服务端的编码为latin

  mysql57只需要在[mysqld]中
  character-set-server=utf8
  init_connect='SET NAMES utf8'
  [client]不需要设
  重启mysqlsystemctl restart mysqld。进入mysql后直接输入status;就可以查看编码

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using  EditLine wrapper

Connection id:		2
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.29 MySQL Community Server (GPL)
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/var/lib/mysql/mysql.sock
Uptime:			9 min 36 sec

Threads: 6  Questions: 67878  Slow queries: 0  Opens: 964  Flush tables: 1  Open tables: 334  Queries per second avg: 117.843
--------------

7.3.4.创建CM用的元数据库

  注释用的- -后面要跟个空格,否则这几句一起复制到mysql中执行不了
-- hive数据库 
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- 集群监控数据库
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- hue数据库
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- sentry
create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- scm
create database scm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- monitor
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- metastore
create database metastore DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

8.安装CM

8.1.准备

  • 3个节点分别创建cloudera-scm用户。CM默认去找用户cloudera-scm,创建完该用户后,将自动使用此用户。
    [root@node105 module]# 
    useradd --system --home=/opt/cm-5.16.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
    [root@node106 module]# 
    useradd --system --home=/opt/cm-5.16.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
    [root@node107 module]# 
    useradd --system --home=/opt/cm-5.16.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
    
    参数说明:
    --system 创建一个系统账户
    --home 指定用户登入时的主目录,替换系统默认值/home/<用户名>
    --no-create-home 不要创建用户的主目录
    --shell 用户的登录 shell 名
    --comment 用户的描述信息
    
    这里的home一定要写对,不然会导致启动报错
  • 上传解压移动
    上传
    cloudera-manager-el6-cm5.16.2_x86_64.tar.gz
    mysql-connector-java-5.1.32.jar
    到/opt/software
    
    解压CM压缩包
    tar zxf cloudera-manager-el6-cm5.16.2_x86_64.tar.gz
    解压之后有两个文件夹
    cloudera
    cm-5.16.2
    把这个两个文件夹放到 /opt。cm默认路径是/opt,但亲测也可以放到别的目录下
    mv cloudera /opt/
    mv cm-5.16.2 /opt/
    上传到/opt/cloudera/parcel-repo
    manifest.json
    CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel
    #	改名
    CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha 
    到/opt/cloudera/parcel-repo/
    

8.3.把mysql驱动jar改名且要复制到2个地方

  cd /opt/software/
  mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar
  cp /opt/software/mysql-connector-java.jar /opt/cm-5.16.2/share/cmf/lib/
  mkdir /usr/share/java
  cp /opt/software/mysql-connector-java.jar /usr/share/java/

8.4. 配置CM

8.4.1. 修改cloudera-scm-agent中的server主机名

vi /opt/cm-5.16.2/etc/cloudera-scm-agent/config.ini
修改server_host 改为管理节点的主机名
server_host=node105

8.4.2. 修改CM的时区

vi /opt/cm-5.16.2/share/cmf/bin/cmf-server
CMF_OPTS="$CMF_OPTS -Duser.timezone=GMT+08"
在这里插入图片描述

8.4.3. 为Cloudera Manager 建数据库

这一步很重要,cm库建不好server启不来
在这里插入图片描述
/opt/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h node105 -uroot -proot --scm-host node105 scm scm scmm
这里设置的密码是3位,而mysql57默认开启了validate_password,密码最小也是4位,要么关闭mysql57的密码验证,要么密码在这里设为4位。
vi /etc/my.cnf [mysqld] validate_password=OFF

8.4.4. 复制cm-5.16.2到集群所有节点

rrsync cm-5.16.2

8.5.启停

#	启动管理节点:node105
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-server start
Starting cloudera-scm-server:                              [确定]
#	启动工作节点:node105、node106、node107
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
[root@node106 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
[root@node107 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
  • 启动过程比较慢,CM启动成功需要3分钟左右。即使上面都没报错,一开始访问web也会没显示,要等3分钟左右。

查看端口占用,如果占用则表示启动成功

[root@node105 cm]# netstat -anp | grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 5498/java

启动时会报pstree:command not found,这个错不影响启动,是因为centos7默认没有pstree命令,要手动安装yum install psmisc -y

访问http://node105:7180,(用户名、密码:admin)

关闭

#	关闭工作节点:node105、node106、node107
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent:                               [确定]
[root@node106 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent:                               [确定]
[root@node107 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent:                               [确定]
#	关闭服务节点:node105
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-server stop
停止 cloudera-scm-server:                                 [确定]

9.安装CDH的服务

 9.1.问题

  {1} 分发Parcel时显示主机状态不良

在这里插入图片描述
https://blog.csdn.net/u010766519/article/details/90633887
是因为server重启而agent没匹配,删除agent的id然后重启agent

[root@cdh-70 ~]# find / -name cm_guid
/var/lib/cloudera-scm-agent/cm_guid
[root@cdh-70 ~]# rm -rf /var/lib/cloudera-scm-agent/cm_guid      --删除文件
[root@cdh-70 ~]# /etc/init.d/cloudera-scm-agent restart       --重启所有agent服务

9.2.选择主机列表

安装时遇到1个问题,分配parcel时虚拟机显示空间不足,能删的都删了之后还提示不足,我就点了取消,导致3个虚拟机都自动关闭了,再打开重新登录进入cmUI发现引导安装的页面不能选节点了,此时默认节点已经设置。但此时我的parcel还没有分发完,于是就从集群中把3个节点删除,重新登录后就又可以选3个节点了,这样就可以重新分发parcel了

9.3.自定义要安装的服务,然后自定义角色

在这里插入图片描述

HDFS

NN和SNN要分开,DN要选所有节点。
没有设置HA,NN只有1个
HttpFS和NFS Gateway不选

Hive

Gateway选所有,HMS和HS2选主节点,WebHCat 不选

Hue,Oozie 都选主节点,也就是有mysql的

  • Hive Metastore Server 、Oozie Server 、Service Monitor、Hue Server 安装节点都要选择MySQL那台机器
    在这里插入图片描述
    yum install libxslt-devel -y hue启动报错
    yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi hue运行时报错`

YARN

RM尽量不跟主节点相同,NN跟DN相同,

zk,3个

CMS 主节点

Spark

要选history server,一般选非server节点,
3个节点都可以操作spark。client模式下谁提交谁就是driver。如果为了省内存,也可以只选1个。

Sentry

Server要设在有mysql的
Gateway也就是客户端统一设到1个节点,也就是node107
  • 配置hive的sentry验证在这里插入图片描述
    在这里插入图片描述
    • 如果报impersonation的错,则关闭关闭hive的用户模拟功能
      在这里插入图片描述

    • 启动时报 is required by Sentry and must be enabled
      在hive 配置导航栏中的默认配置中如下设置:
      在这里插入图片描述

9.4.审核

9.5.测试数据库连接

9.5.1 hue

Unexpected error. Unable to verify database connection.

https://www.cnblogs.com/wuning/p/11738697.html
这篇blog遇到的错跟我一模一样,日志信息也一样,但我的mysql节点并不是没有so文件,而是mysql57自动把/usr/lib64/mysql/下的so文件给升级了,跟hue版本不匹配,如下,从别的没安装mysql57的复制1个并设置ln即可。
在这里插入图片描述
从别的节点复制1个18.0.0的so文件到/usr/lib64/mysql即可。
[root@node106 mysql]# rrsync /usr/lib64/mysql/libmysqlclient.so.18.0.0
ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 libmysqlclient.so.18
之后还要做一些处理,见上面blog

ImportError: libxslt.so.1: cannot open shared object file: No such file or directory

在这里插入图片描述
3个节点安装 yum install libxslt-devel -y

之后成功

在这里插入图片描述

9.6.启动服务

 问题:

  1. JAVA_HOME,如果版本清单中显示不适用。jdk要设置到usr/java下。或者在UI中设置jdk的路径

9.7.启动CMS

没启动CMD之前服务的状态都是个灰色问号,图标区域也不显示

9.8.测试MR

hdfs hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100

10.添加parcel外的组件parcel

每个版本的CDH会提供一套组件的搭配,但有时需要更换或添加组件。比如CDH5.16.2默认spark是1.6,现在要升级到2.2.0
CDH支持同组件多版本并存,可以在不删除1.6的情况下安装使用2.2.0

10.1.下载spark2.2.0的parcel

http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera4/
http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.2.0.cloudera4.jar
一共需要下载4个
在这里插入图片描述

10.2.上传,改名

上传文件SPARK2_ON_YARN-2.2.0.cloudera4.jar到/opt/cloudera/csd/下面
上传文件SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel和SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel.sha1 到/opt/cloudera/parcel-repo/
3)将sha1重命名为sha
[root@node105 parcel-repo]# mv /opt/cloudera/parcel-repo/SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel.sha1 SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel.sha

10.3.CM首页-导航栏/主机-parcel-右上角检查新Parcel-Spark2-分配-激活

10.4.此时回到首页,发现并没有spark2,重启CDH后才发现有了spark2。添加、启动spark服务

注意:CDH的server和agent服务和组件的服务是平级的,把server和agent kill了,组件的服务还在

10.5 问题

 1.启动服务时,如果报JAVA_HOME的错。此时去版本清单会发现jdk显示不适用

2种解决办法:

  • 查看/opt/module/cm/cm-5.16.2/lib64/cmf/service/common/cloudera-config.sh
    找到java8的home目录
    在这里插入图片描述
    cdh不会使用系统默认的JAVA_HOME环境变量,而是依照bigtop进行管理,因此我们需要在指定的/usr/java/jdk1.8目录下安装jdk。当然我们已经在/usr/java/jdk下安装了jdk,因此创建一个连接过去即可
    3个节点都要执行:ln -s /usr/java/jdk/ /usr/java/jdk1.8
  • 主机 - 所有主机 - 选单个节点 - 高级 - 设置java_home 的目录

 2.spark2-shell:Required executor memory (1024+384 MB) is above the max threshold

把2个参数调大,然后重启下yarn
https://blog.csdn.net/With__Sunshine/article/details/94918874

 3.spark2-shell:Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

切换成hdfs用户即可

 4.使用hdfsUI时:Permission denied: user=dr.who

hdfs dfs -chmod -R 755 /user/spark

10.5 测试spark2集群运行

spark2-submit \
--master yarn --deploy-mode client \
--executor-memory 1G --num-executors 2 --executor-cores 2 \
--driver-memory 1g --total-executor-cores 2 \
--class cn.dc.SparkWC \
/opt/test/spark_test-shade-0.0.1-SNAPSHOT.jar
  • 如报java.io.FileNotFoundException: File does not exist:hdfs://node105:8020/user/spark/spark2ApplicationHistory
    是因为/user/spark/spark2ApplicationHistory这个目录不会自动创建,需要手动创建
    hadoop fd -mkdir /user/spark/spark2ApplicationHistory
    • spark2ApplicationHistory存的是以application_appID为名的json格式的任务日志
      在这里插入图片描述
      CDH上spark的History Server的数据源就是这里,所以一开始还没执行spark任务时,http://node107:18089/打不开。History Server的UI上可以查到app运行的详细信息。
发布了21 篇原创文章 · 获赞 0 · 访问量 604

猜你喜欢

转载自blog.csdn.net/qq_34224565/article/details/104114258
今日推荐