大数据篇:这些年大数据组件的一些踩坑和优化总结(代码片段)

杨铖 杨铖     2022-11-22     173

关键词:

这些年除了做算法,大数据也搞得水生火热,下面是这些年的一些踩到的坑和一些经验的总结.

写入hbase提示closing socket问题

Session 0x0 for server ip-10-0-10-55.ec2.internal/10.0.10.55:2181, unexpected error, closing socket connection and attempting reconnect

问题:spark stream 往 hbase 写数据时会出现的问题,提示 zookeeper socket 连接不了。
原因:CDH中zookeeper为防止集群遭受DDos攻击,默认将 Maximum Client Connections 设置成了60,当超过这个次数时,后面的连接将会一直失败
解决:将改参数 Maximum Client Connections 修改成 0,即不做任何限制。
注意:修改成0后如何防止攻击需要做额外的一些工作。

debug spark-1.6.0 内存泄漏错误

spark-1.6.0 内存泄漏问题是spark的一个遗留问题,建议迁到spark-2.1.0.

spark 任务无法序列化问题

1. 所有的class都必须继承自 java.io.Serializable 
2. broadcast 操作若包含自定义类,则该操作最好定义在函数的外面,类的最外层,当成类的属性。

spark sortby失败问题

在spark里对dataframe或RDD进行sortby时,确保每条记录不占用太多内存,若每条记录包含长字符串或者长数组,
先分离出去再做sortby, 否则shuffle的时候或十分缓慢同时容易造成内存溢出。

kafka 跨网段无法消费问题

通常我们的内网IP都是192.168.1.X, 但是如果我们的Kafka服务和Kafka消费者是分布在不同网段,那怎么办?
比如:
Kafka集群在192.168.2.X
Kafka消费者在192.168.1.X

解决方案是修改kafka消费者的host, 让192.168.2.X 和 192.168.1.X 互通。

spark 数据库连接池序列化问题

如果在RDD外面,即driver节点上初始化连接,比如数据库连接,或者ActorSystem,那么再将其放到RDD里面时便会报错,
这种东西无法序列化是Spark弥留很久的问题。

解决方案是先对RDD做foreachPartition,在每个partition里初始化连接,再做进一步操作,而不是在每个RDD里初始化连接,
前者会极大减少初始化次数,提高代码的效率。

spark 大表关联大表计算问题

任何时候都要避免大表关联大表的计算,尽量将大表拆小,如果实在没法避免,有如下方法可供参考:

假设大表A关联大表B计算距离矩阵,

  - 1.大表A先切分为若干块,可通过设置相应字段进行过滤;
  - 2.将表B`collect`回来,再将其`broadcast`出去,对表A切分结果的小表与表B做关联计算。

kudu tablet server关停

CDH上kudu时常会有一些tablet server出现异常,当关掉该tablet server后,若要该tablet server重新正常工作,需要将
原来改tablet server的kudu data目录下的tablet data和wal删掉。

详见:
https://kudu.apache.org/docs/index.html
http://cwiki.apachecn.org/display/Kudu/Index

kudu ntp时间不同步问题

kudu在掉了一段时间或者服务器挂了一段时间后会出现:
Check failed: _s.ok() Bad status: Service unavailable: Cannot initialize clock: Error reading clock. Clock considered unsynchronized Full log file

解决方案具体操作为:
centos/rehat系统的:
sudo yum install ntp
sudo /etc/init.d/ntpd restart

ubuntu系统的:
sudo apt-get install ntp
sudo service ntp restart

查看状态:
ntptime

若是:
ntp_gettime() returns code 0 (OK)
  time de24c0cf.8d5da274  Tue, Feb  6 2018 16:03:27.552, (.552210980),
  maximum error 224455 us, estimated error 383 us, TAI offset 0
ntp_adjtime() returns code 0 (OK)
  modes 0x0 (),
  offset 1279.543 us, frequency 2.500 ppm, interval 1 s,
  maximum error 224455 us, estimated error 383 us,
  status 0x2001 (PLL,NANO),
  time constant 10, precision 0.001 us, tolerance 500 ppm,
  
则重启KUDU table sever即可。

kudu 修改master

1. 修改kudu master信息,最后对应的为kudu新master uuid:新IP:端口, 端口一般为7051:
sudo -u kudu kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=/data/kudu/master --fs_data_dirs=/data/kudu/master 00000000000000000000000000000000 610e3791d4044637a3e3484abee7796c:10.2.113.104:7051

2. CM上修改kudu configuation, 设置 master.address 为 新IP:端口

3. 在master节点上命令行进入mysql, 账号相关信息一般在 /etc/cloudera-scm-server/db.properties ,进入hive database:
UPDATE TABLE_PARAMS SET PARAM_VALUE ='10.2.113.104:7051'
WHERE PARAM_KEY = 'kudu.master_addresses'
AND PARAM_VALUE = '192.168.1.23:7051';

上述为将旧IP修改为新IP.

4. imppala更新:
INVALIDATE METADATA;

参考:
https://www.cloudera.com/documentation/enterprise/5-13-x/topics/kudu_administration_cli.html#migratingToMultipleKuduMasters.d12e306

集群swap memory(交换内存)使用过多导致服务变慢甚至挂掉问题

sysctl -w vm.swappiness=1

参考:
https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.html#cdh_performance__section_xpq_sdf_jq

集群yarn org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService: Most of the disks failed.

问题为nodemanager磁盘服务空间达到设定的最大的限度(默认90%)

解决办法:
1. 删掉或者迁移hdfs上的数据部分到别的地方
2. 修改 max-disk-utilization-per-disk-percentage 参数, 调高其比例.

集群hbase问题:org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired

查看log日志是zookeeper链接超时,有可能是以下原因:
1. GC时间过长
2. load太高
3. 该HBase节点的regionServer当次向其他节点收集的内容过多

解决方案:
1. 修改zookeeper max session timeout,修改为2分钟,默认1分钟
2. 同时修改HBase session timeout为2分钟,默认1分钟

集群HDFS datanode启动失败,提示权限问题:’/var/run/hdfs-sockets’ is owned by a user who is not root and not you

解决方案:修改目录 /var/run/hdfs-sockets 所有者权限
sudo chown hdfs:root -R /var/run/hdfs-sockets

Oozie配置spark2

https://blog.csdn.net/yc_1993/article/details/100049444

CDH集群加硬盘

1. sudo /etc/init.d/cloudera-scm-server status  //查看集群状态
2. 在CM上停止所有的集群服务
3. sudo /etc/init.d/cloudera-scm-server stop //在master命令行停止CDH相关server
3.1. service cloudera-scm-server stop //如果3步骤不行,用3.1方法
4. mkdir /dfs/dn2 //在新加的磁盘挂载点创建dn2目录
5. sudo chown -R hdfs:hadoop /dfs/dn2 //修改相应权限
6. sudo /etc/init.d/cloudera-scm-server start //启动CDH相应服务
7. 通过CM修改HDFS配置文件:dfs.data.dir, dfs.datanode.data.dir, 新增 /dfs/dn2.
8. 通过CM重启HDFS服务
9. hadoop dfsadmin -report //查看DFS used% 和 DFS Remaining是否有发生变化

spark rpc message 太大错误

问题:Consider increasing spark.rpc.message.maxSize or using broadcast variables for large values.
解决方案:
在spark submit的时候, 添加参数 --conf spark.rpc.message.maxSize=512, 把默认128改成512.

hive truncate表的时候卡住问题

# 在命令行设置并发锁
set hive.support.concurrency=false;

spark 任务Stage过多导致的内存溢出

问题:Exception in thread "dispatcher-event-loop-31" java.lang.OutOfMemoryError: GC overhead limit exceeded
解决方案:
由于spark默认stage为1000时才垃圾清理,超出了系统的OOM默认设置,一般可以这么解决:

1. 给任务分配更多的内存(不过不建议,治标不治本)

2. 由于通常出现这种任务是循环过多导致,可以通过查看spark application上每个循环job 和 stage的次数,提交任务的时候设置以下两个参数:
   --conf spark.ui.retainedJobs=16 
   --conf spark.ui.retainedStages=64
   以上两个数值通过观察得到,一般为每个job和stage的倍数即可, 不可太小亦不可太大。
   

oozie spark任务读取hive表时 table or viem not found问题

问题:子节点由于没有hive-site.xml相应的配置,读不到hive相关元数据信息

解决方案:设置sparkConf里hive相应uris和dir

val scConf = new SparkConf()
                .setAppName(appConf.getString("name"))
                .set("hive.metastore.uris", "thrift://hostname:9084")
                .set("hive.metastore.warehouse.dir", "/user/hive/warehouse")
val sqc = new HiveContext(sc)

sbt依赖(采用hiveContext):
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.1.0" % Provided
libraryDependencies += "org.apache.spark" % "spark-hive_2.11" % "2.1.0" % Provided

spark-core 和 hbase-client io.netty包冲突: java.lang.NoSuchMethodError: io.netty.channel.DefaultFileRegion

问题: spark-core的io.netty 和hbase-client的包冲突, 由于hbaes采用了旧版了io.netty, 所以spark里面有些方法找不到.

解决方案:查看spark的netty版本后直接指定io.netty版本,例:
libraryDependencies += "io.netty" % "netty-all" % "4.0.42.Final"

spark-sql 特殊字符问题

问题: 通常会遇到一些表的字段名包含各种各样的字符,如: `-?!^% 这些, 在spark-sql里会 org.apache.spark.sql.AnalysisException: cannot resolve XXX

解决方案: 再用``将整个字符包起来, 例:
val a = "abc-abc"
“`” + a + "`"

impala查询hive 找不到metadata问题

问题:
ERROR: AnalysisException: Unrecognized table type for table: XXXX
CAUSED BY: TableLoadingException: Unrecognized table type for table: XXX

hive表使用了ORC存储格式,impala2.x以下不支持, 改用parquet格式吧. 

yarn: sparkcontext stopped while waiting for backend

问题: 
1. 可能是分配给node的内存太小,而数据太大
2. 可能是由于Java 8的excessive memory allocation strategy

两种解决方案:
1. 对于第一种可能:提交spark任务的时候,--driver-memory 和--executor-memory 设置大一点(推荐这个方案)
一般默认的nodemanager的java heap是1g, ResourceManager的java heap也是1g, java opts的permSize设置一般512m,
所以预留这些空间外, 加上数据本身的可能大小,  就是最终driver和excutor的大小.


2. 对于第二种可能:在nodemanager的yarn-site.xml中添加:
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

第二种方案是是能解决问题,但是也使得nodemanager在内存问题上对每个container失去相应的控制

oozie调度任务由于网络或者其他不可抗因素自己掉

解决方案:

workflow.xml 在action_name标签后加上重试次数与重试间隔时间(分钟)
retry-max="3" retry-interval="1"

或者通过hue添加任务的时候, 通过界面操作添加retry-max和retry-interval

CDH 删掉坏掉的节点 与重新上线问题

问题:通常坏掉的节点是没办法正常通过decommission解除掉的,同样的,未解除掉的节点是没办法重新上线的

解决方案:
1. 针对坏死节点解除问题,需要进入各个服务下先停止坏掉节点的服务(停服务可能会报错,但是没问题),然后在CM上就可以解除该节点了
2. 针对解除节点后没办法重新上线,经常显示current managed 为yes, 此时需要需要在CM上Remove Hosts From Cloudera Manager

CDH添加节点时: hostname localhost.localdomain differs from the canonical name localhost

问题:hostname问题

解决方案:
1. 修改/etc/hosts里面的ip和hostname
2. 修改/etc/sysconfig/network, 里面的hostname, 重启网络service network restart

查看是否有问题:
1. uname -n
2. python里查看:
import socket
print socket.getfqdn()
print socket.gethostbyname(socket.getfqdn())

HDFS新增目录节点:CDH org.apache.hadoop.util.DiskChecker$DiskErrorException: Directory is not writable

问题:hdfs写入权限问题

解决方案:
chown -R hdfs:hadoop /XXXX/XXXXXX

hbase重启region server节点出现:org.apache.hadoop.hbase.ClockOutOfSyncException: Server 60020,1572261259281 has been rejected; Reported time is too far out of sync with master

问题:节点与master时间不同步问题

解决方案:利用ntp同步时间
1. yum install ntp
2. /etc/init.d/ntpd restart
3. ntptime

看到没有任何error字眼出现后即可,若restart后有FAILED的,再继续restart,若ntptime后error的,继续ntptime.

spark stream 任务卡住,显示processing

出现该问题有很多种原因,需要一一排查:

1. 所用的系统若为centos, 内核需高于 4.0.6 ,该问题详见:
   https://stackoverflow.com/questions/40225135/spark-streaming-kafka-job-stuck-in-processing-stage
   https://bugzilla.redhat.com/show_bug.cgi?id=1209433

hdfs 单节点内磁盘数据均衡


问题:有时一个节点挂载了多个磁盘,不同磁盘间数据不均衡导致读写速度受影响,需要对单个节点内的不同磁盘的数据做均衡

解决方案:
1. 解除该节点重新上线(简单粗暴,数据多时不可取)

2. 利用hdfs diskbalancer 
在CM hdfs配置里搜索safety value,第一个选项里添加:
Name: dfs.disk.balancer.enabled
Value: true

输入命令:
# 获取json文件,plan后面为要均衡的节点
hdfs diskbalancer -plan gz18
# 查看plan json目录
hdfs dfs -ls /system/diskbalancer 
# 执行均衡操作
hdfs diskbalancer -execute /system/diskbalancer/xxxx/xxx.plan.json
# 查看均衡结果
hdfs diskbalancer -query gz18

impala round函数未能正确保留精度问题:

解决方案: 采用 decimal 格式后再保留精度, Decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位。

round(cast(1.111 * 100 as decimal(6, 2)), 2)

CDH集群机器由于外部原因导致所有节点内核挂掉重启

1. 集群全部突发性挂掉后CM-server和CM-agent服务不见:
解决方案:
sudo service cloudera-scm-agent start
sudo service cloudera-scm-server start

2. 恢复CM界面后,出现 host monitor is not runing:
解决方案:
在Cloudera Management Service中restart所有服务

3. 集群恢复过程中HDFS namenode和datanode clusteID不兼容
解决方案:
将namenode节点上/dfs/nn/current中VERSION里面的clusterID修改跟datanode一样即可, 具体原因是namenode被做了格式化了。

4. 集群恢复过程中hbase出现如下问题:org.apache.hadoop.security.AccessControlException: Permission denied: user=hbase, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
解决方案:
sudo -u hdsf hdfs dfs -mkdir /hbase
sudo -u hdfs hdfs dfs -chmod 777 /hbase

5. 集群恢复过程中yarn出现:org.apache.hadoop.security.AccessControlException: Permission denied: user=mapred, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
解决方案:
sudo -u hdfs hdfs dfs -chmod 777 /

6. 集群namenode元数据丢失恢复
解决方案:
(1)删除namenode下 dfs/nn 相关元数据残留文件
sudo -u hdfs hdfs namenode -format 
(2)复制secondnamenode 下 dfs/snn/cuurent 中最新的fsimage和VERSION到 namenode的 dfs/nn/current下面,同时对文件做MD5计算
例:md5sum fsimage_0000000000224286054 > fsimage_0000000000224286054.md5
(3)退出safemode模式
sudo -u hdfs hdfs dfsadmin -safemode leave
(4)重启hdfs

7. hdfs恢复过程中出现missing block等问题
解决方案:
(1)查看丢失的block数
sudo -u hdfs hdfs dfsadmin -report
(2)如果数据不重要可以直接delete
sudo -u hdfs hdfs fsck -delete

项目jar包与spark环境冲突

问题:项目开发过程中本地调试完成后提交到集群,经常会遇到依赖冲突,那么怎么解决这种问题?

首先如何看项目依赖和集群是否兼容,有几种方法:
1、提交代码的时候通过错误查看,通常都会看到incompatible相关字眼,或者version 52.0什么,这种比较直观,但也比较被动。
2、通过dependencyTree查看项目依赖版本,对比集群/opt/cloudera/parcels/CDH/jars目录下的jars包即可,这种比较主动。

那么当遇到不兼容时,解决方案大概有以下几种:
1、项目依赖版本低于集群,这种情况可以尝试将项目依赖版本升到集群版本,如果高版本的api也适合当前开发环境的话。
2、项目依赖版本高于集群,这种情况最简单就是降低版本,但是通常低版本难以满足开发需要,那么怎么搞,这里主要说下sbt管理,
(1)首先在assembly.sbt添加插件 addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2")
(2)通过sbt的dependencyTree命令查看哪个jar包与集群冲突
(3)通过在sbt添加 
assemblyShadeRules in assembly := Seq(
    ShadeRule.rename("org.apache.http.**" -> "shadeio.@1").inAll
)
利用shade操作在打包时对冲突包进行别名

hive数据迁移到其他集群

1. 元数据迁移:
# mysqldump导出hive元数据表到sql文件
(1)mysqldump -h hostip --databases db_name --single-transaction -u user_name -p > hive_databases.sql
(2)/etc/hadoop/conf/hdfs-site.xml #查看当前集群和目标集群hdfs的ip和port
(3)set -i "s/old_ip:old_port/new_ip:new_port/g" hive_databases.sql  #将旧集群hdfs ip:port替换成新的ip:port
(4)mysql -u user_name -p < hive_databases.sql  #将元数据导入新集群的库中

# 重点!!
(5)上面直接把旧的old_ip:old_port替换成新的new_ip:new_port对于hive内部表是没问题的,但是对于外部表有问题,
通常内部表的old_port和new_port都是8022,外部表的port为8020,如此替换后会出现查询外部表的时候提示:
no host: hdfs://hostname:8022:8020:/path 这样两个端口叠加;
解决方案就是:
进入hive元数据表,修改SDS表中的LOCATION信息:
UPDATE SDS a
INNER JOIN (select SD_ID, REPLACE(LOCATION,":8022","" ) as l from SDS where LOCATION like '%8022:8020%')b
on a.SD_ID = b.SD_ID
set a.LOCATION = b.l

2. 原始数据迁移
- 第一种, 这种方式需要两边的集群互通, 不止是namenode互通,还需要datanode互通
sudo -u hdfs hadoop distcp hdfs://local_namenode:port/source hdfs://remote_namenode:port/dest

- 第二种, 先把本地集群数据拉到本地,在scp过去远程集群,再把数据put到集群hdfs, (下面的 hdfs://namenode:port 这种前缀可以省略)
sudo -u hdfs hdfs dfs -get hdfs:/namenode:port/hdfs_data /local_director
tar -zcvf ./data.tar.gz /local_director
rsync -r ./data.tar.gz remote_ip:/remote_director
tar -zxvf ./data.tar.gz
sudo -u hdfs hdfs dfs -put /local_director hdfs://namenode:port/hdfs_director

记一次CDH集群被入侵事件

CDH版本: 6.2.0
注入脚本为:/tmp/kdevtmpfsi /var/tmp/kinsing
脚本属性:挖矿类占用大量cpu资源
原因分析:
- 第一ssh端口没有安全变更;
- 第二公网IP没有做白名单;
- 第三微软云安全机制不了解;
- 第四CDH6.2.0上的KAFKA存在ACL漏洞,
- 具体参考:https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_621_fixed_issues.html#id_uvz_fvd_hlb
  漏洞描述Potential to bypass transaction and idempotent ACL checks in Apache Kafka
解决方案:
- ssh端口改63305加安全验证
- 不开放公网IP,或者公网IP加白名单访问列表
- 升级CDH到6.2.1

hive报错:Cannot obtain block length for LocatedBlock

问题: aused by: java.io.IOException: Cannot obtain block length for LocatedBlockBP-2013445412-xxxx-1479285812782:....
因为集群出现其他异常导致正在读文件的程序中止,没有释放文件,所以下次读到改文件会访问不了

解决方案:
1. 查出哪些文件还在读状态:sudo -u hdfs hdfs fsck -openforwrite
2. 释放该文件: sudo -u hdfs hdfs debug recoverLease -path /data/1600135201583.log  -retries 3

其中1步骤里面可能查出很多没用.符号,可以先写到文件再拿出来分析,
其次查出的文件可能有一些是hbase或者其他服务的文件,这些文件不能随便去释放,需谨慎对待查出的文件

CDH安装

v6.2.1(建议用6.2.1,6.2版本存在ACL漏洞)官网文档: https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/installation.html 
配置过程中有两个注意点:
1. /etc/sysconfig/network 不需要添加hostname进去, 否则在安装的时候会找不到主机名
2. 在Step 3: Install Cloudera Manager Server里面,不要理(Recommended) Enable Auto-TLS,否则在安装时候会出现heartbeat error, 
  巨坑, enable tls后无法取消,只能重装。
  
  
具体安装过程为(默认均为centos7系统):
(1). 在每个节点上修改hosts文件, 为每台机添加hosts解析, 测试hostname可以用`uname -a`和`hostname`命令
vim /etc/hosts
1.1.1.1  foo-1.example.com
2.2.2.2  foo-2.example.com
3.3.3.3  foo-3.example.com
4.4.4.4  foo-4.example.com

(2). 在每个节点上关闭防火墙
sudo iptables-save > ~/firewall.rules
sudo systemctl disable firewalld
sudo systemctl stop firewalld

(3). 在每个节点上关闭安全增强模块SELinux
输入`getenforce`若输出`Permissive`或`Disabled`, 则可以忽略此步,不是则看下面
vim /etc/selinux/config
修改SELINUX=enforcing为SELINUX=permissive
setenforce 0

(4). 在每个节点上安装NTP, CDH官网有提供ntp server配置,忽略就可以,如果同步其server时间,会改变当前系统
yum install ntp
sudo systemctl start ntpd
sudo systemctl enable ntpd
hwclock --systohc

(5). 配置CDH安装源, 源的下载地址: https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cm_6_version_download.html
sudo wget https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
sudo rpm --import https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPM-GPG-KEY-cloudera

(6). 在CDH CMserver上安装JDK
sudo yum install oracle-j2sdk1.8

(7). 在CDH CMserver上安装CM, 官网上这里会提到Enable Auto-TLS, 忽略就可以, 否则后面安装不了
sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

(8). 在CDH CMserver安装mysql
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum update
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl stop mysqld
rm -f /var/lib/mysql/ib_logfile0
rm -f /var/lib/mysql/ib_logfile1

vim my.cnf
可以替换为CDH提供的参考配置: https://docs.cloudera.com/documentation/enterprise/6/6.2/topics/cm_ig_mysql.html#cmig_topic_5_5

sudo systemctl enable mysqld
sudo systemctl start mysqld

修改mysql root账号密码
/usr/bin/mysql_secure_installation
回车
输入新的root密码
确认新密码
Y
Y
N
Y
Y

在每个节点上安装mysql jdbc
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
tar zxvf mysql-connector-java-5.1.46.tar.gz
sudo mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.46
sudo cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar



(9). 在CDH CMserver提前创建CM server所需要的mysql元数据库, 如下创建scm库,并创建scm用户和其密码, 此处根据需要提前创建相应库
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm123';

更多提前库如:
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive123$%^';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon123$%^';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman123$%^';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue123$%^';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'metastore123$%^';
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry123$%^';
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav123$%^';
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms123$%^';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie123$%^';


(10). 在CDH CMserver预准备相关数据库
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

更多预准备如:
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql hive hive
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql amon amon
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql rman rman
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql hue hue
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql metastore metastore
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql sentry sentry
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql nav nav
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql navms navms
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql oozie oozie

(11). 启动CM server:
sudo systemctl start cloudera-scm-server
查看日志:
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
看到: INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

即可打开CM的web管理界面:
http://<server_host>:7180
admin
admin

然后根据页面提示进行安装操作即可配置完整个集群。

2021年大数据kafka:❤️kafka特点总结和架构❤️

全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章一、Kafka特点总结kafka特点总结二、Kafka架构架构图专业术语系列历史文... 查看详情

❤️2021年大数据kafka:kafka特点总结和架构

全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章一、Kafka特点总结kafka特点总结二、Kafka架构架构图专业术语系列历史文... 查看详情

做了五年大数据开发工程师总结的的大数据学习路线

先扯一下大数据的4V特征:数据量大,TB->PB数据类型繁多,结构化、非结构化文本、日志、视频、图片、地理位置等;商业价值高,但是这种价值需要在海量数据之上,通过数据分析与机器学习更快速的挖掘出来;处理时效性... 查看详情

2021年大数据elk:elasticsearch中的核心概念

全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章Elasticsearch中的核心概念一、索引index二、映射mapping三、字段Field四、类型T... 查看详情

2021年大数据kafka:kafka的分片和副本机制

全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章Kafka的分片和副本机制一、分片机制二、副本机制三、总结系列历史文章... 查看详情

2021年大数据kafka:kafka的分片和副本机制

全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章Kafka的分片和副本机制一、分片机制二、副本机制三、总结系列历史文章... 查看详情

2021年大数据elk(二十三):kibana简介

全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。Kibana简介通过上面的这张图就可以看到,Kibana可以用来展示丰富的图表。Kibana是一个开... 查看详情

2021年大数据hbase(十六):hbase的协处理器(coprocessor)(代码片段)

全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章HBase的协处理器(Coprocessor)一、起源二、协处理器主要的分类三、HBase的协... 查看详情

2021年大数据kafka:kafka生产者数据分发策略

全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章生产者数据分发策略策略一:用户指定了partition策略二:用户发生数据的时... 查看详情

2021年大数据elk(二十七):数据可视化(visualize)

全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录数据可视化(Visualize)一、数据可视化的类型二、以饼图展示404与200的占比三、... 查看详情

2021年大数据kafka:kafka如何保证数据不丢失

全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章Kafka如何保证数据不丢失一、如何保证生产者数据不丢失1)消息生产... 查看详情

dataease二开记录--踩坑和详细步骤(代码片段)

...ff0c;本案例是1.17.0版本。下载地址开源社区-FIT2CLOUD飞致云数据库配置数据库初始化:DataEase使用MySQL数据库,推荐使用MySQL5.7版本。同时DataEase对数据库部分配置项有要求,请参考下附的数据库配置,修改开发环境... 查看详情

大数据组件的默认端口号思维导图

...码农的意思,我希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。本文是假如大数据组件中的动物都变成神奇宝贝,那会变成什么样?的姊妹篇大数据组件的默认端口号思维导图,后期将... 查看详情

2021年大数据hbase(十七):hbase的360度全面调优

全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章HBase的360度全面调优一、通用调优二、Linux调优三、HDFS调优四、HBase的调... 查看详情

网易云捕性能踩坑解决之道上篇

...宝虹授权网易云社区发布。从零开始设计开发一个日处理数据8亿的大数据高并发实时系统,哪些性能问题需要特别注意?这里我们一起梳理一下,本文中我将以PE,SA同学戏称的DDOS系统—网易云捕设计开发实践中两年的时间里碰... 查看详情

2021年大数据elk:集中式日志协议栈elasticstack简介(代码片段)

全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章 一、简介二、ELK协议栈介绍及体系结构三、集中式日志协议栈组件功能... 查看详情

2021年大数据hbase(十七):❤️hbase的360度全面调优❤️

全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录🐏系列历史文章🐏🐇HBase的360度全面调优🐇一、⚡️通用调优⚡️二... 查看详情

2021年大数据hbase(十三):hbase读取和存储数据的流程

全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。目录系列历史文章HBase读取和存储数据的流程一、HBase读取数据的流程二、HBase存储数据的... 查看详情