皮皮网

【258棋牌源码】【tomcat 源码学习】【地图系统源码】hadoop2.7.3 源码详解

来源:易语言办公软件源码 时间:2024-11-23 04:01:53

1.高效调度新篇章:详解DolphinScheduler 3.2.0生产级集群搭建
2.如何在MaxCompute上运行HadoopMR作业
3.在Ubuntu里面搭建四个节点内存怎么分配?

hadoop2.7.3 源码详解

高效调度新篇章:详解DolphinScheduler 3.2.0生产级集群搭建

       通过简化复杂的源码任务依赖关系,DolphinScheduler为数据工程师提供了强大的详解工作流程管理和调度能力。在3.2.0版本中,源码DolphinScheduler引入了一系列新功能和改进,详解显著提升了其在生产环境中的源码稳定性和可用性。以下是详解258棋牌源码对如何在生产环境中搭建一个高可用的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集群的tomcat 源码学习账号,建议直接使用,无需配置。

       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,地图系统源码硬盘分配每个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的通,如果是内核源码版本通的则配置成功,如果不通需要在找原因了,如下图所示:

       在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/