草庐IT

CDH6.3.2整合DolphinScheduler3.0.0

Zakza 2023-04-05 原文

注意事项

zookeeper版本兼容要查看dolphinscheduler的libs目录下zookeeper的jar包

CDH6.3.2

DolphinScheduler3.0.0

使用CDH或其他大数据平台,注意保持用户组一致,CHD使用的是supergroup用户组

前置条件

  • 默认CDH以正确安装并启动

  • 至少官方要求的基础环境以正确安装并配置,点击跳转

  • 使用mysql需要驱动包 mysql-connector-java-8.0.16+.jar,同时所有服务的libs里面都需要

  • zookeeper使用CDH中就可以,官网要求3.4.6+,但是CDH的3.4.5也可以使用

开始部署

配置用户免密及权限(官网没有创建用户组)

groupadd supergroup
# 创建用户并指定用户组,并修改登录方式
useradd dolphinscheduler -g supergroup -m -s /bin/bash

# 添加密码
echo "dolphinscheduler" | passwd --stdin dolphinscheduler

# 配置 sudo 免密
sed -i '$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers

免密登录配置(所有操作都要使用dolphinscheduler操作)

su dolphinscheduler
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id localhost
#输入yes并输入密码,如果以下命令不需要输入密码,则配置成功
ssh localhost

下载二进制包 ,点击下载

tar -xvzf apache-dolphinscheduler-3.0.0-bin.tar.gz
# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
chown -R dolphinscheduler:supergroup apache-dolphinscheduler-*-bin
cd apache-dolphinscheduler-3.0.0-bin/

将mysql-connector-java-8.0.20.jar复制或上传到当前目录

创建脚本cp_mysql.sh,粘贴一下内容

#!/bin/bash
cp -rf mysql-connector-java-8.0.20.jar api-server/libs/
cp -rf mysql-connector-java-8.0.20.jar alert-server/libs/
cp -rf mysql-connector-java-8.0.20.jar master-server/libs/
cp -rf mysql-connector-java-8.0.20.jar worker-server/libs/
cp -rf mysql-connector-java-8.0.20.jar tools/libs/

保存退出并授权执行

chmod +x cp_mysql.sh
./cp_mysql.sh

修改配置文件install_env.sh dolphinscheduler_env.sh

官网缺少的数据库初始化

按照官网教程部署配置mysql,创建数据库,用户等

CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler@123!';
GRANT ALL ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler@123!';
flush privileges;
 bash tools/bin/upgrade-schema.sh

[注意]hdfs相关配置

如果需要使用hdfs等依赖组件配置,需要修改master-server,worker-server,api-server的conf/common.properties,这个文件默认是一样的,可以修改一份后直接复制

修改后,执行安装脚本

bash bin/install.sh

问题总结

如果启动失败,请检查zookeeper版本是否兼容,bin/env下面的两个配置文件是否配置正确

日志文件查看在配置的installPath路径的下的master-server/logs/dolphinscheduler-master.log

报错1:zookeeper connect timeout: localhost:2181

修改master-server/conf/application.yaml中的block-until-connected为6000ms

报错2:Failed to put registry key: /nodes/master报错

基本都是版本问题,可以查看libs下面的zookeeper版本

报错3: 本地执行spark报错NoSuchMethodError

org.apache.spark.sql.AnalysisException: java.lang.NoSuchMethodError: org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(Lorg/apache/hadoop/hive/conf/HiveConf;Lorg/apache/hadoop/hive/metastore/HiveMetaHookLoader;Ljava/util/Map;Ljava/lang/String;)Lorg/apache/hadoop/hive/metastore/IMetaStoreClient;;

需要将本地项目依赖的所有jar上传,检查依赖中是否缺少或版本不一致或存在多个版本

完成成功使用

访问http://localhost:12345/dolphinscheduler

账号admin

密码dolphinscheduler123

使用教程

Bug及问题

  1. 资源中心创建文件夹失败,报错未启用配置

修改Hdfs配置api-server/conf/common.properties文件来设置存储为hdfs,并复制core-site.xml,hdfs-site.xml复制到当前目录

  1. DolphinScheduler上传大文件失败,api日志报错No suitable resolver

前端请求超时取消问题解决方法

  1. 在非master节点部署DolphinScheduler会出现用户权限问题,尽可能在master节点或cm服务端所在节点部署,DolphinScheduler创建的租户无读写权限,即使加入supergroup组也无权限,保持用户同步,比如DolphinScheduler部署服务器上新增test用户,master节点也要新增test用户,然后命令刷新映射

#新增用户指定supergroup组(cm主节点和DolphinScheduler部署机器)
useradd test -g supergroup -s /bin/bash
#刷新用户及组映射
su -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings" hdfs

总结

遇到配置问题或bug,按照开发思路,去排查,基本都能解决或者取issue搜索,DolphinScheduler的配置文件里面有详细的说明,3.x后的官方教程写的比较粗

有关CDH6.3.2整合DolphinScheduler3.0.0的更多相关文章

  1. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  2. ruby-on-rails - Rails 3.2 防止使用错误保存对象 - 2

    我有一个ActiveRecord对象,我想在不对模型进行永久验证的情况下阻止它被保存。您过去可以使用errors.add执行类似的操作,但它看起来不再有效了。user=User.lastuser.errors.add:name,"namedoesn'trhymewithorange"user.valid?#=>trueuser.save#=>true或user=User.lastuser.errors.add:base,"myuniqueerror"user.valid?#=>trueuser.save#=>true如何在不修改用户对象模型的情况下防止将用户对象保存在Rails3.2中

  3. ruby - 在 Heroku Cedar 上的 Rails 3.2 中,是否有一种标准的方式来提供预压缩的 Assets ? - 2

    我有一个正在HerokuCedar堆栈上部署的Rails3.2应用程序。这意味着应用程序本身负责为其静态Assets提供服务。我希望对这些Assets进行gzip压缩,所以我在production.rb的中间件堆栈中插入了Rack::Deflater:middleware.insert_after('Rack::Cache',Rack::Deflater)...curl告诉我这与宣传的一样有效。但是,由于Heroku将全力运行rakeassets:precompile,生成一堆预gzipAssets,我很想使用它们(而不是让Rack::Deflater再次完成所有工作)。我已经看到使用

  4. ruby-on-rails - Rails 5 升级 :/actionpack-5. 0.0/lib/action_controller/test_case.rb:49:in `initialize':参数数量错误(0 代表 2)(ArgumentError) - 2

    我最近正在进行Rails5升级,当我尝试启动Rails控制台时遇到了这个错误:/actionpack-5.0.0/lib/action_controller/test_case.rb:49:ininitialize':wrongnumberofarguments(0for2)(ArgumentError)当前bundleupdaterails已经完成了gem依赖项的解决,足以更新到5.0.0,rspec正在运行(尽管我正在修复很多中断)。我也可以运行railss没有错误。这里是代码中断行:https://github.com/rails/rails/blob/master/action

  5. ruby - Rails 3.2 CRUD : . 其中 'or' 有条件 - 2

    使用ruby​​onrails,我想做类似的事情:@tasks=Task.where(:def=>true||:house_id=>current_user.house_id)执行此操作的最有效/最干净的方法是什么? 最佳答案 你可以这样做:Task.where("def=?orhouse_id=?",true,current_user.house_id)一般情况是:Model.where("column=?orother_column=?",value,other_value)您还可以利用Arel:t=Task.arel_tabl

  6. ruby - 不兼容的 marshal 文件格式(无法读取)需要格式版本 4.8; 0.0 给出 - 2

    我收到以下错误:incompatiblemarshalfileformat(can'tberead)formatversion4.8required;0.0given在这一行:从我的布局文件的这一部分:true%>true%>我以前从来没有遇到过这个问题,网上的解释对我来说太高级了,或者与制作游戏的人有关,我的项目是一个简单的rails应用程序,我昨天才开始。 最佳答案 您尝试过清算Assets吗?bundleexecrakeassets:clean然后重新编译:bundleexecrakeassets:precompile您是否以

  7. ruby - 如何将 Interactive Ruby 整合到我的开发过程中? - 2

    我正在尝试找到一种更好的方法将IRB与我的常规ruby​​开发集成。目前我很少在我的代码中使用IRB。我只用它来验证语法或尝试一些小的东西。我知道我可以将我自己的代码加载到ruby​​中作为一个require'mycode'但这通常不符合我的编程风格。有时我要检查的变量超出范围或在循环内。有没有一种简单的方法可以启动我的脚本并在IRB内的某个点卡住?我想我正在寻找一种更简单的方法来调试我的ruby​​代码而不破坏我的F5(编译)键。也许有经验的ruby开发者可以和我分享一个更精简的开发方法。 最佳答案 安装ruby​​-debugg

  8. ruby-on-rails - 未定义方法 `update' 为 nil :NilClass rails 4. 0.0 - 2

    我是RubyonRails和堆栈溢出方面的初学者。很抱歉,如果在问这个问题时有错误或...我正在尝试为我的博客项目编写编辑/更新。这是我的Controller:defedit@post=Post.findparams[:id]enddefupdate@post.update(params[:post].permit(:title,:summary,:content))redirect_toposts_pathend这是我的观点:EditPageTitle:Summary:Content:当我想更新任何帖子时,我不断收到此错误:NoMethodErrorinPostsController

  9. ruby - 使用 Drupal 和 Ruby。有没有人整合两者? - 2

    我开始了一个小型网络项目并使用Drupal来构建它。到目前为止,还不错:您可以快速建立一个不错的面向CMS的网站,通过模块添加社交功能,并且您有一个广泛的API可以在一个架构良好的平台中进行自定义。现在问题来了:网站的增长超出了最初的计划,我发现自己正处于认真开始为它编写代码的境地。由于Drupal项目,我对PHP有了新的认识,但我想用Ruby来做。我会感觉更舒服,以后维护起来更容易,我可以在其他Ruby/Rails应用程序中重用它。随着时间的推移,我想我会用Ruby重写Drupal中的现有部分。基于此,问题是:是否有人将两者(成功或失败的故事)结合起来?这是一个相当大的决定,但我在G

  10. ruby-on-rails - Rails 3.2 ActiveAdmin 'Collection is not a paginated scope.' 错误 - 2

    我正在使用Rails3.2和ActiveAdmin0.4.4开发应用程序。我有一个名为Teaser的模型(/app/models/teaser.rb):classTeasertruemount_uploader:img,TeaserUploaderend然后我向其中添加了ActiveAdmin(/app/admin/teaser.rb):#encoding:UTF-8ActiveAdmin.registerTeaserdoformdo|f|f.inputs"Teaser"dof.input:name,:label=>'Текст'f.input:url,:label=>'Ссылка'

随机推荐