1.高效调度新篇章:详解DolphinScheduler 3.2.0生产级集群搭建
2.å¦ä½å¨MaxComputeä¸è¿è¡HadoopMRä½ä¸
3.在Ubuntu里面搭建四个节点内存怎么分配?
高效调度新篇章:详解DolphinScheduler 3.2.0生产级集群搭建
通过简化复杂的源码任务依赖关系,DolphinScheduler为数据工程师提供了强大的详解工作流程管理和调度能力。在3.2.0版本中,源码DolphinScheduler引入了一系列新功能和改进,详解显著提升了其在生产环境中的源码稳定性和可用性。以下是详解中福源码对如何在生产环境中搭建一个高可用的DolphinScheduler集群的详细步骤介绍,包括环境准备、源码数据库配置、详解用户权限设置、源码SSH免密登陆配置、详解ZooKeeper启动以及服务的源码启动与停止等关键步骤。
1. 环境准备
1.1 集群规划:本次安装环境为contos7.9。详解
1.2 组件下载地址:DolphinScheduler-3.官网: dolphinscheduler.apache.org...
1.3 前置准备工作:注意,源码DolphinScheduler本身不依赖Hadoop、详解Hive、源码Spark,但如果你运行的任务需要依赖他们,就需要有对应的环境支持。
2. DolphinScheduler集群安装
2.1 解压安装包
2.2 配置数据库:DolphinScheduler 元数据存储在关系型数据库中,因此需要创建相应的数据库和用户。
2.3 准备DolphinScheduler启动环境:如果已有hadoop集群的linux syslogd 源码账号,建议直接使用,无需配置。
2.4 启动zookeeper(hadoop集群已有无需配置)
2.5 修改install_env.sh文件
2.6 修改dolphinscheduler_env.sh文件
2.7 初始化数据库
2.8 修改application.yaml文件
2.9 修改common.properties文件
2. 分布式存储hdfs依赖分发
2. 启动DolphinScheduler
2. 登录DolphinScheduler
3. 起停服务
å¦ä½å¨MaxComputeä¸è¿è¡HadoopMRä½ä¸
MaxComputeï¼åODPSï¼æä¸å¥èªå·±çMapReduceç¼ç¨æ¨¡ååæ¥å£ï¼ç®å说æ¥ï¼è¿å¥æ¥å£çè¾å ¥è¾åºé½æ¯MaxComputeä¸çTableï¼å¤ççæ°æ®æ¯ä»¥Record为ç»ç»å½¢å¼çï¼å®å¯ä»¥å¾å¥½å°æè¿°Tableä¸çæ°æ®å¤çè¿ç¨ï¼ç¶èä¸ç¤¾åºçHadoopç¸æ¯ï¼ç¼ç¨æ¥å£å·®å¼è¾å¤§ãHadoopç¨æ·å¦æè¦å°åæ¥çHadoop MRä½ä¸è¿ç§»å°MaxComputeçMRæ§è¡ï¼éè¦éåMRç代ç ï¼ä½¿ç¨MaxComputeçæ¥å£è¿è¡ç¼è¯åè°è¯ï¼è¿è¡æ£å¸¸ååææä¸ä¸ªJarå æè½æ¾å°MaxComputeçå¹³å°æ¥è¿è¡ãè¿ä¸ªè¿ç¨ååç¹çï¼éè¦èè´¹å¾å¤çå¼ååæµè¯äººåãå¦æè½å¤å®å ¨ä¸æ¹æè å°éå°ä¿®æ¹åæ¥çHadoop MR代ç å°±è½å¨MaxComputeå¹³å°ä¸è·èµ·æ¥ï¼å°æ¯ä¸ä¸ªæ¯è¾çæ³çæ¹å¼ã
ç°å¨MaxComputeå¹³å°æä¾äºä¸ä¸ªHadoopMRå°MaxCompute MRçéé å·¥å ·ï¼å·²ç»å¨ä¸å®ç¨åº¦ä¸å®ç°äºHadoop MRä½ä¸çäºè¿å¶çº§å«çå ¼å®¹ï¼å³ç¨æ·å¯ä»¥å¨ä¸æ¹ä»£ç çæ åµä¸éè¿æå®ä¸äºé ç½®ï¼å°±è½å°åæ¥å¨Hadoopä¸è¿è¡çMR jarå æ¿è¿æ¥ç´æ¥è·å¨MaxComputeä¸ãç®å该æ件å¤äºæµè¯é¶æ®µï¼ææ¶è¿ä¸è½æ¯æç¨æ·èªå®ä¹comparatoråèªå®ä¹keyç±»åï¼ä¸é¢å°ä»¥WordCountç¨åºä¸ºä¾ï¼ä»ç»ä¸ä¸è¿ä¸ªæ件çåºæ¬ä½¿ç¨æ¹å¼ã
使ç¨è¯¥æ件å¨MaxComputeå¹³å°è·ä¸ä¸ªHadoopMRä½ä¸çåºæ¬æ¥éª¤å¦ä¸ï¼
1. ä¸è½½HadoopMRçæ件
ä¸è½½æ件ï¼å å为hadoop2openmr-1.0.jarï¼æ³¨æï¼è¿ä¸ªjaréé¢å·²ç»å å«hadoop-2.7.2çæ¬çç¸å ³ä¾èµï¼å¨ä½ä¸çjarå ä¸è¯·ä¸è¦æºå¸¦hadoopçä¾èµï¼é¿å çæ¬å²çªã
2. åå¤å¥½HadoopMRçç¨åºjarå
ç¼è¯å¯¼åºWordCountçjarå ï¼wordcount_test.jar ï¼wordcountç¨åºçæºç å¦ä¸:
package com.aliyun.odps.mapred.example.hadoop;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
import java.util.StringTokenizer;
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
3. æµè¯æ°æ®åå¤
å建è¾å ¥è¡¨åè¾åºè¡¨
create table if not exists wc_in(line string);
create table if not exists wc_out(key string, cnt bigint);
éè¿tunnelå°æ°æ®å¯¼å ¥è¾å ¥è¡¨ä¸
å¾ å¯¼å ¥ææ¬æ件data.txtçæ°æ®å 容å¦ä¸ï¼
hello maxcompute
hello mapreduce
ä¾å¦å¯ä»¥éè¿å¦ä¸å½ä»¤å°data.txtçæ°æ®å¯¼å ¥wc_inä¸ï¼
tunnel upload data.txt wc_in;
4. åå¤å¥½è¡¨ä¸hdfsæ件路å¾çæ å°å ³ç³»é ç½®
é ç½®æ件å½å为ï¼wordcount-table-res.conf
{
"file:/foo": {
"resolver": {
"resolver": "c.TextFileResolver",
"properties": {
"text.resolver.columns.combine.enable": "true",
"text.resolver.seperator": "\t"
}
},
"tableInfos": [
{
"tblName": "wc_in",
"partSpec": { },
"label": "__default__"
}
],
"matchMode": "exact"
},
"file:/bar": {
"resolver": {
"resolver": "openmr.resolver.BinaryFileResolver",
"properties": {
"binary.resolver.input.key.class" : "org.apache.hadoop.io.Text",
"binary.resolver.input.value.class" : "org.apache.hadoop.io.LongWritable"
}
},
"tableInfos": [
{
"tblName": "wc_out",
"partSpec": { },
"label": "__default__"
}
],
"matchMode": "fuzzy"
}
}
在Ubuntu里面搭建四个节点内存怎么分配?
一、硬件配置以及操作系统:
所需要的机器以及操作系统:一台mac os笔记本、一台window笔记本(CPU双核四线程,内存8G),其中mac os用于远程操作,window笔记本装有虚拟机,虚拟出3个ubuntu.系统(配置CPU1个线程2个,内存1.5G,http 下载 源码硬盘分配每个G),对于mac os(可以用window机或者linux机)的配置没有要求
使用vm创建3个ubuntu.系统,一个主节点:master(NameNode)和两个从节点slave1(DataNode)和slave2(DataNode)
节点IP分配:主节点IP为:..0.、从节点1IP为:..0.、从节点2IP为:..0.
虚拟机的网络选择桥接模式与物理网络的网段相同,这样有助于远程连接。
master的主机名为:sunxj-hdm,slave1的主机名为:sunxj-hds1,slave2的主机名为:sunxj-hds2,如下图所示:
定义域名:sunxj-hdm.myhd.com(master),sunxj-hds1.myhd.com(slave1),微主页源码sunxj-hds2.myhd.com(slave2)
配置hosts,将3台的hosts配置为:
..0. sunxj-hdm.myhd.com..0. sunxj-hds1.myhd.com ..0. sunxj-hds2.myhd.com
如下图所示:
注意:不能放在最下边,从注释行开始往下是配置ipv6的,ip和域名之间必须是一个tab,且域名后不能有空格,否则是ping不通的,还有3个主机必须配置相同才能互ping。
7.然后使用如下命令进行重启网络
sudo /etc/init.d/networking restart
如下图所示:
8、然后通过ping sunxj-hds1.myhd.com查看是否可以ping的通,如果是svm源码scala通的则配置成功,如果不通需要在找原因了,如下图所示:
在master机ping slave1和slave2
在 slave1机ping master和slave2
在 slave2机ping master和slave1
二、节点需要安装的工具:
三个节点需要安装的工具为:vm-tool、gcc、net-tools、openssh-server、vsftpd、vim(用于ftp服务)
安装顺序:
(1)sudo apt install gcc
(2) 安装vm-tool
(3)sudo apt install net-tools
(4)sudo apt install vim
(5)sudo apt install openssh-server(可以使用/etc/init.d/ssh start 启动ssh)
(6)在安装好ssh后即可远程操作,在macos中打开终端进行ssh远程连接,如下图所示:
(7)安装ftp服务并配置vsftpd请看::</value> </property>
注意:第一个属性中的value和我们之前创建的/usr/hadoop-2.7.7/hdfs/tmp路径要一致。
如下图所示:
属性说明:
参数
属性值
解释
fs.defaultFS
NameNode URI
hdfs://host:port/
io.file.buffer.size
SequenceFiles文件中.读写缓存size设定
fs.defaultFS //为masterIP地址,其实也可以使用主机名或者域名,这个属性用来指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口,也可以指定为一个namenode服务(这个服务内部可以有多台namenode实现ha的namenode服务)o.file.buffer.size //该属性值单位为KB,KB即为默认的M,这个属性用来执行文件IO缓冲区的大小hadoop.tmp.dir //指定hadoop临时目录,前面用file:表示是本地目录。有的教程上直接使用/usr/local,我估计不加file:应该也可以。hadoop在运行过程中肯定会有临时文件或缓冲之类的,必然需要一个临时目录来存放,这里就是指定这个的。当然这个目录前面我们已经创建好了。
<!-- 也有人使用zookeeper,因此,需要在hadoop核心配置文件core-site.xml中加入zookeeper的配置:--><!-- 指定zookeeper地址 。zookeeper可以感知datanode工作状态,并且提供一些高可用性的特性。暂时不了解zookeeper,后续再说。先不加入这个配置了暂时。--><property><name>ha.zookeeper.quorum</name><value>dellserver:,dellserver:,dellserver:,dellserver:,dellserver:</value></property>
、配置 hadoop-env.sh文件,用于配置jdk目录,使用如下命令打开
sudo vim etc/hadoop/hadoop-env.sh
然后将export JAVA_HOME=${ JAVA_HOME}注释掉配置成具体的路径:export JAVA_HOME=/usr/jdk1.8.0_,否则在运行时会提示找不到JAVA_HOME,如下图所示:
、在mapred-env.sh加入JAVA_HOME,如下图所示:
、在yarn-env.sh加入JAVA_HOME,如下图所示:
、配置hdfs-site.xml,使用如下命令打开文件
sudo vim etc/hadoop/hdfs-site.xml
然后在<configuration></configuration>中加入以下代码:
<property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/hadoop-2.7.7/hdfs/name</value> <final>true</final> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/hadoop-2.7.7/hdfs/data</value> <final>true</final> </property> <property> <name>dfs.namenode.secondary.:</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property>
注意:其中第二个dfs.namenode.name.dir和dfs.datanode.data.dir的value和之前创建的/hdfs/name和/hdfs/data路径一致;由于有两个从主机slave1、slave2,所以dfs.replication设置为2
如下图所示:
属性说明:
配置NameNode
————————————————
版权声明:本文为CSDN博主「sxjlinux」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:/sunxiaoju/java/article/details/