
项目经验
天涯问路
独乐乐不如众乐乐~
展开
-
flask 的 jsonify 自动排序问题
背景·Python 在写接口的时候有时需要返回 json 格式的数据给客户端·最简单的方式就是用 flask 的 jsonify,能直接将字典格式化为 json 的形式进行传输例如from flask import jsonify.........def return_success(data): """返回成功信息""" return jsonify(data)通过以上 jsonify 的方式大部分需求是能够搞定的问题引发但是有时候我们要传递的 json 格式可能原创 2021-12-07 16:09:54 · 2618 阅读 · 2 评论 -
Hadoop格式化失败,无法启动Namenode,报错:dfs.namenode.format.enable false
Hadoop 格式化的时候报错:dfs.namenode.format.enable false。此时启动集群会发现 Namenode 无法启动,其实就是 Namenode 格式化失败了。原因:很有可能是你们公司在编译 hadoop 的时候故意把格式化功能注释掉了。解决办法:在 hdfs-site.xml 添加一个配置<property> <name>dfs.namenode.format.enable</name> <value&原创 2021-08-02 15:58:17 · 3374 阅读 · 0 评论 -
Idea maven 项目 pom 文件相关问题
pom 引入依赖注意事项:依赖的版本,最好等于集群安装的版本,低于也可,但最好不要高于集群版本,否则可能引起异常; 项目的依赖包必须写在 pom 文件下,否则打包的时候可能会引起依赖找不到的异常; pom 的 build 要配置 compile 打包,否则打的包里没有代码的类; src 目录下,最好有 java 的资源文件夹,空的也行,否则打包时可能会报 No such compile 异常; 框架之间各版本的兼容性问题,例如:scala 是 2.11 版本,要对应kafka 的 flink-c原创 2021-06-15 18:01:25 · 434 阅读 · 0 评论 -
Flink Bug集锦
1.The program's entry point class 'xxx' was not found in the jar file.打包问题:https://blog.youkuaiyun.com/S_Alics/article/details/117929680另外要注意,如果代码用到了其他依赖,则需使用带有依赖的包,就是那个又大又长的 .jar2.org.apache.flink.runtime.jobmanager.scheduler.NoResourceAvailableException:原创 2021-06-15 17:52:27 · 3021 阅读 · 1 评论 -
java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
报错原因是:集群 scala 版本和项目的不匹配,需降低项目的 scala 版本,并且,如果引用了其他依赖包,也要进行相应的版本降低,而且各框架之间要兼容。例如:scala是2.11版本,要对应flink-connector-kafka_2.11,如果flink-connector-kafka_2.12,也会报这个错。...原创 2021-06-15 17:46:28 · 2971 阅读 · 0 评论 -
NoResourceAvailableException: Could not allocate all requires slots within timeout of 300000 ms...
完整的报错信息:org.apache.flink.runtime.jobmanager.scheduler.NoResourceAvailableException: Could not allocate all requires slots within timeout of 300000 ms. Slots required: 3, slots allocated: 1, previous allocation...没有资源可用,原因就是:项目设置的并行度大于集群的 slot 个数,导致抢夺资源原创 2021-06-15 17:44:22 · 4386 阅读 · 0 评论 -
idea 的 maven 项目报错:The program‘s entry point class ‘xxx‘ was not found in the jar file.
错误提示在 jar 包内找不到 xxx.class 文件,可能的原因是:pom 的 build 配置有问题。pom 的 build 配置应该有 compile 打包配置,如下: <build> <plugins> <!-- 该插件用于将 Scala 代码编译成 class 文件 --> <plugin> <groupId>net.alch原创 2021-06-15 17:40:57 · 4722 阅读 · 0 评论 -
Idea 精准到类的打包方式:Artifacts 打包
这种打包方式更精确,可以直接精确到具体类,这种情况下打的包,上传到 Flink web 时,不需要手动写入 class 文件名,它会自动填入,如果没有自动填入,或许是你的 Flink 版本太低了,我的是 flink1.9.1 版本。打包配置:1.File——>Project Structure...2.Artifacts——>+——>JAR——>From modules with dependencies...3.Artifacts——>...原创 2021-06-15 17:29:40 · 2735 阅读 · 0 评论 -
scala 遍历 java 的 util.Map
Flink 从 Kafka 获取数据进行处理,本来运行的好好的,突然报错:Caused by: org.apache.flink.runtime.JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy具体错误日志如下:Exception in thread "main" org.apache.flink.runtime.client.JobExecutionException: Job execution faile原创 2021-06-15 17:18:35 · 2414 阅读 · 1 评论 -
No ExecutorFactory found to execute the application.
Flink 项目运行出现No ExecutorFactory found to execute the application.错误。错误的定位是在 env.execute() 这行代码上。错误的原因是:从 flink1.11.0版本开始,需要多引入一个 flink-client 包<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-client..原创 2021-06-07 13:45:00 · 5851 阅读 · 0 评论 -
log4j.properties
# 输出到控制台log4j.rootLogger=WARN,CONSOLE,logfilelog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=[frame] %d{yyyy-MM-dd HH:mm:ss,SSS} - %-原创 2021-03-03 16:17:18 · 135 阅读 · 1 评论 -
集群所有采集通道启动/停止脚本
一、启动 / 停止 项 及 顺序 及 链接启动:hadoop 集群:hdfs 和 yarn zookeeper 集群:zk.sh flume 采集集群:flume1.sh kafka 集群:kfk.sh flume 消费集群:flume2.sh停止:启动的反顺序:5、4、3、2、1二、脚本内容#!/bin/bashcase $1 in"start"){ echo " -------- 启动 hadoop 集群 -------" /opt/module/hadoop原创 2020-09-15 09:48:54 · 242 阅读 · 0 评论 -
Flume 内存优化之 OutOfMemoryError: GC overhead limit exceeded
1.问题描述:启动消费Flume抛出如下异常ERROR hdfs.HDFSEventSink: process failedjava.lang.OutOfMemoryError: GC overhead limit exceeded2.解决方案步骤:(1)在hadoop102 服务器的 /opt/module/flume/conf/flume-env.sh 文件中增加如下配置export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management原创 2020-09-15 09:25:36 · 808 阅读 · 0 评论 -
Kafka 集群启动停止脚本---消灭黄叹号
1.在~/bin 目录下创建脚本 kfk.sh#! /bin/bashcase $1 in"start"){ for i in hadoop102 hadoop103 hadoop104 do echo " --------启动 $i Kafka-------" ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/modul原创 2020-09-14 14:39:33 · 234 阅读 · 0 评论 -
日志采集、消费 Flume 启动停止脚本
1.在 ~/bin目录下创建脚本:vim /bin/flume.sh#! /bin/bashcase $1 in"start"){ for i in hadoop102 hadoop103 do echo " --------启动 $i 采集flume-------" ssh $i "nohup /opt/module/flume/bin/flume-ng agent --conf-file /opt原创 2020-09-14 14:19:26 · 684 阅读 · 0 评论 -
Idea 项目关联 Scala
一、问题描述 Idea 想要开发 Scala 项目必须要安装 Scala 插件,但是新建的项目,虽然 Scala 插件,但发现右键创建代码的时候,根本没有 scala 相关的项,还需要跟 Scala 做一个关联二、关联步骤1.右键项目,选择:2.找到 Scala ,选中,OK3.再次 New ,就有 Scala 了...原创 2020-09-14 10:33:49 · 352 阅读 · 0 评论 -
集群时间同步修改脚本
说明:此脚本仅用于日常做测试时使用1.在 ~/bin/ 目录下创建脚本 dt.sh#!/bin/bashfor i in hadoop102 hadoop103 hadoop104do echo "========== $i ==========" ssh -t $i "sudo date -s $1"done2.修改权限:chmod 777 /bin/dt.sh3.修改所有者:chown lpy:lpy /bin/dt.sh4.使用示例:dt.原创 2020-09-12 15:49:35 · 246 阅读 · 0 评论 -
集群日志生成启动脚本
1.脚本内容 lg.sh#!/bin/bashfor i in hadoop102 hadoop103 do ssh $i "java -classpath /opt/module/log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar com.atguigu.appclient.AppMain $1 $2 >/dev/null 2>&1 &" done2.修改权限:chmod 777 lg.sh3.说原创 2020-09-12 15:12:48 · 403 阅读 · 0 评论 -
Linux 系统黑洞 /dev/null
一、什么是 Linux 系统黑洞? /dev/null 代表 Linux 的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。二、Linux 的输入输出Linux 定义了一个标准输入和两个输出:标准输入0:从键盘获得输入 /proc/self/fd/0 标准输出1:输出到屏幕(即控制台) /proc/self/fd/1 错误输出2:输出到屏幕(即控制台) /proc/self/fd/2三、"黑洞"的使用有时候生成的日志文件没有利用价值,就可以全部丢...原创 2020-09-11 17:13:45 · 1227 阅读 · 0 评论 -
Zookeeper 群起群停脚本
由于zookeeper 没有自带的群起群停脚本,我们只能手动一个节点一个节点的去启动,但是如果集群数量太多的话,假如有100台,一个个手动去启动,要累死。 所以还是要写个群起脚本在/bin/ 目录下新建 zk.sh ,内容如下:#!/bin/bashfor i in hadoop101 hadoop102 hadoop103dossh 'hadoop'$i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh $1"done...原创 2020-09-11 16:35:05 · 340 阅读 · 0 评论 -
Linux 环境变量及注意事项
一、登陆式 Shell 和 非登陆式 Shell首先要了解,什么是登陆式 Shell 和非登陆式 Shell登陆式 Shell:采用用户名密码登陆,例如:在 Hadoop102 上用 lpy 用户登陆 非登录式 Shell:采用 ssh 登陆,例如:在 hadoop102 上输入命令:ssh hadoop103 登陆 hadoop103二、Linux 环境变量 /etc/profile 文件:用来设置系统环境参数,比如 $PATH. 这里面的环境变量是对系统内所有用户生效。...原创 2020-09-11 15:54:26 · 247 阅读 · 0 评论 -
Hadoop 参数调优及相关面试题
一、HDFS 参数调优 hdfs-site.xml NameNode 有一个工作线程池,用来处理不同 DataNode 的并发心跳以及客户端并发的元数据操作。对于大集群或者有大量客户端的集群来说,通常需要增大参数 dfs.namenode.handler.count 的默认值10。设置该值的一般原则是将其设置为集群大小的自然对数乘以20,即20logN,N为集群大小。dfs.namenode.handler.count=20 * log2(Cluster Size),比如集群规模为8...原创 2020-09-11 14:06:45 · 301 阅读 · 0 评论 -
HDFS 存储多目录及注意事项
一、HDFS 为什么要配置多目录存储正常情况下,一台机器只有一块硬盘是不够的,会造成 HDFS 存储空间紧张,因此需要对 DataNode 进行磁盘扩展二、配置 HDFS 多目录存储1.首先要看一下机器上的磁盘使用情况注意,这里一共有 4 个目录可以提供存储空间,即:/、/hd3、/hd4、/hd22.在 hdfs-site.xml 文件中配置多目录,这里需要注意新挂载磁盘的访问权限问题<property> <name>dfs.datan.原创 2020-09-10 17:32:04 · 866 阅读 · 0 评论 -
Hadoop 为什么要做基准测试?
一、为什么要做基准测试有两个问题:将一个 1T 的数据上传到 hdfs 需要多久? 将一个 10T 的数据从 hdfs 读取完毕需要多久?如果不做基准测试,这两个问题就没有答案,因为不知道。所以在搭建完集群后,一定要先做基准测试。二、如何做基准测试1.测试 HDFS 写性能:向 HDFS 写 10个 128M 的文件(看自己心情设置文件个数和大小)hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop.原创 2020-09-10 15:39:02 · 240 阅读 · 0 评论 -
LZO压缩配置及注意事项
一、由于 Hadoop 本身并不支持 LZO 压缩,所以需要使用 twitter 的 hadoop-lzo 开源组件。1.hadoop-lzo 需要依赖 hadoop 和 lzo 进行编译,编译步骤请参考: https://blog.youkuaiyun.com/S_Alics/article/details/1085134082.将编译好的 hadoop-lzo 的 jar 包放入 hadoop/share/hadoop/common(放在自己真实的路径的common文件夹下)3.配置 ...原创 2020-09-10 14:41:12 · 971 阅读 · 0 评论 -
Hadoop-LZO 编译步骤
一、环境准备maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像) gcc-c++ zlib-devel autoconf automake libtool 通过yum安装即可:yum -y install gcc-c++ lzo-devel zlib-devel autoconf automake libtool二、下载、安装并编译 LZO点击下载 LZO:http://www.oberhumer.com/opensource/lzo/...原创 2020-09-10 14:36:30 · 631 阅读 · 1 评论