• 关于

    快速入门git

    的搜索结果

回答

Spring Cloud 学习笔记(一)——入门、特征、配置 0 放在前面 0.1 参考文档 http://cloud.spring.io/spring-cloud-static/Brixton.SR7/ https://springcloud.cc/ http://projects.spring.io/spring-cloud/ 0.2 maven配置 org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE org.springframework.cloud spring-cloud-dependencies Dalston.RELEASE pom import org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-eureka 0.3 简介 Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。 分布式系统的协调引出样板模式(boiler plate patterns),并且使用Spring Cloud开发人员可以快速地实现这些模式来启动服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。 Version: Brixton.SR7 1 特征 Spring Cloud专注于为经典用例和扩展机制提供良好的开箱即用 分布式/版本配置 服务注册与发现 路由选择 服务调用 负载均衡 熔断机制 全局锁 领导人选举和集群状态 分布式消息 2 原生云应用程序 原生云是应用程序开发的一种风格,鼓励在持续交付和价值驱动领域的最佳实践。 Spring Cloud的很多特性是基于Spring Boot的。更多的是由两个库实现:Spring Cloud Context and Spring Cloud Commons。 2.1 Spring Cloud Context: 应用上下文服务 Spring Boot关于使用Spring构建应用有硬性规定:通用的配置文件在固定的位置,通用管理终端,监控任务。建立在这个基础上,Spring Cloud增加了一些额外的特性。 2.1.1 引导应用程序上下文 Spring Cloud会创建一个“bootstrap”的上下文,这是主应用程序的父上下文。对应的配置文件拥有最高优先级,并且,默认不能被本地配置文件覆盖。对应的文件名bootstrap.yml或bootstrap.properties。 可通过设置spring.cloud.bootstrap.enabled=false来禁止bootstrap进程。 2.1.2 应用上下文层级结构 当用SpringApplication或SpringApplicationBuilder创建应用程序上下文时,bootstrap上下文将作为父上下文被添加进去,子上下文将继承父上下文的属性。 子上下文的配置信息可覆盖父上下文的配置信息。 2.1.3 修改Bootstrap配置文件位置 spring.cloud.bootstrap.name(默认是bootstrap),或者spring.cloud.bootstrap.location(默认是空) 2.1.4 覆盖远程配置文件的值 spring.cloud.config.allowOverride=true spring.cloud.config.overrideNone=true spring.cloud.config.overrideSystemProperties=false 2.1.5 定制Bootstrap配置 在/META-INF/spring.factories的key为org.springframework.cloud.bootstrap.BootstrapConfiguration,定义了Bootstrap启动的组件。 在主应用程序启动之前,一开始Bootstrap上下文创建在spring.factories文件中的组件,然后是@Beans类型的bean。 2.1.6 定制Bootstrap属性来源 关键点:spring.factories、PropertySourceLocator 2.1.7 环境改变 应用程序可通过EnvironmentChangedEvent监听应用程序并做出响应。 2.1.8 Refresh Scope Spring的bean被@RefreshScope将做特殊处理,可用于刷新bean的配置信息。 注意 需要添加依赖“org.springframework.boot.spring-boot-starter-actuator” 目前我只在@Controller测试成功 需要自己发送POST请求/refresh 修改配置文件即可 2.1.9 加密和解密 Spring Cloud可对配置文件的值进行加密。 如果有"Illegal key size"异常,那么需要安装JCE。 2.1.10 服务点 除了Spring Boot提供的服务点,Spring Cloud也提供了一些服务点用于管理,注意都是POST请求 /env:更新Environment、重新绑定@ConfigurationProperties跟日志级别 /refresh重新加载配置文件,刷新标记@RefreshScope的bean /restart重启应用,默认不可用 生命周期方法:/pause、/resume 2.2 Spring Cloud Commons:通用抽象 服务发现、负载均衡、熔断机制这种模式为Spring Cloud客户端提供了一个通用的抽象层。 2.2.1 RestTemplate作为负载均衡客户端 通过@Bean跟@LoadBalanced指定RestTemplate。注意URI需要使用虚拟域名(如服务名,不能用域名)。 如下: @Configuration public class MyConfiguration { @LoadBalanced @Bean RestTemplate restTemplate() { return new RestTemplate(); } } public class MyClass { @Autowired private RestTemplate restTemplate; public String doOtherStuff() { String results = restTemplate.getForObject(" http://stores/stores", String.class); return results; } } 2.2.2 多个RestTemplate对象 注意@Primary注解的使用。 @Configuration public class MyConfiguration { @LoadBalanced @Bean RestTemplate loadBalanced() { return new RestTemplate(); } @Primary @Bean RestTemplate restTemplate() { return new RestTemplate(); } } public class MyClass { @Autowired private RestTemplate restTemplate; @Autowired @LoadBalanced private RestTemplate loadBalanced; public String doOtherStuff() { return loadBalanced.getForObject(" http://stores/stores", String.class); } public String doStuff() { return restTemplate.getForObject(" http://example.com", String.class); } } 2.2.3 忽略网络接口 忽略确定名字的服务发现注册,支持正则表达式配置。 3 Spring Cloud Config Spring Cloud Config提供服务端和客户端在分布式系统中扩展配置。支持不同环境的配置(开发、测试、生产)。使用Git做默认配置后端,可支持配置环境打版本标签。 3.1 快速开始 可通过IDE运行或maven运行。 默认加载property资源的策略是克隆一个git仓库(at spring.cloud.config.server.git.uri')。 HTTP服务资源的构成: /{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties application是SpringApplication的spring.config.name,(一般来说'application'是一个常规的Spring Boot应用),profile是一个active的profile(或者逗号分隔的属性列表),label是一个可选的git标签(默认为"master")。 3.1.1 客户端示例 创建以Spring Boot应用即可,添加依赖“org.springframework.cloud:spring-cloud-starter-config”。 配置application.properties,注意URL为配置服务端的地址 spring.cloud.config.uri: http://myconfigserver.com 3.2 Spring Cloud Config 服务端 针对系统外的配置项(如name-value对或相同功能的YAML内容),该服务器提供了基于资源的HTTP接口。使用@EnableConfigServer注解,该服务器可以很容易的被嵌入到Spring Boot 系统中。使用该注解之后该应用系统就是一个配置服务器。 @SpringBootApplication @EnableConfigServer public class ConfigApplicion { public static void main(String[] args) throws Exception { SpringApplication.run(ConfigApplicion.class, args); } } 3.2.1 资源库环境 {application} 对应客户端的"spring.application.name"属性 {profile} 对应客户端的 "spring.profiles.active"属性(逗号分隔的列表) {label} 对应服务端属性,这个属性能标示一组配置文件的版本 如果配置库是基于文件的,服务器将从application.yml和foo.yml中创建一个Environment对象。高优先级的配置优先转成Environment对象中的PropertySource。 3.2.1.1 Git后端 默认的EnvironmentRepository是用Git后端进行实现的,Git后端对于管理升级和物理环境是很方便的,对审计配置变更也很方便。也可以file:前缀从本地配置库中读取数据。 这个配置库的实现通过映射HTTP资源的{label}参数作为git label(提交id,分支名称或tag)。如果git分支或tag的名称包含一个斜杠 ("/"),此时HTTP URL中的label需要使用特殊字符串"(_)"来替代(为了避免与其他URL路径相互混淆)。如果使用了命令行客户端如 curl,请谨慎处理URL中的括号(例如:在shell下请使用引号''来转义它们)。 Git URI占位符 Spring Cloud Config Server支持git库URL中包含针对{application}和 {profile}的占位符(如果你需要,{label}也可包含占位符, 不过要牢记的是任何情况下label只指git的label)。所以,你可以很容易的支持“一个应用系统一个配置库”策略或“一个profile一个配置库”策略。 模式匹配和多资源库 spring: cloud: config: server: git: uri: https://github.com/spring-cloud-samples/config-repo repos: simple: https://github.com/simple/config-repo special: pattern: special*/dev*,special/dev* uri: https://github.com/special/config-repo local: pattern: local* uri: file:/home/configsvc/config-repo 如果 {application}/{profile}不能匹配任何表达式,那么将使用“spring.cloud.config.server.git.uri”对应的值。在上例子中,对于 "simple" 配置库, 匹配模式是simple/* (也就说,无论profile是什么,它只匹配application名称为“simple”的应用系统)。“local”库匹配所有application名称以“local”开头任何应用系统,不管profiles是什么(来实现覆盖因没有配置对profile的匹配规则,“/”后缀会被自动的增加到任何的匹配表达式中)。 Git搜索路径中的占位符 spring.cloud.config.server.git.searchPaths 3.2.1.2 版本控制后端文件系统使用 伴随着版本控制系统作为后端(git、svn),文件都会被check out或clone 到本地文件系统中。默认这些文件会被放置到以config-repo-为前缀的系统临时目录中。在Linux上,譬如应该是/tmp/config-repo- 目录。有些操作系统routinely clean out放到临时目录中,这会导致不可预知的问题出现。为了避免这个问题,通过设置spring.cloud.config.server.git.basedir或spring.cloud.config.server.svn.basedir参数值为非系统临时目录。 3.2.1.3 文件系统后端 使用本地加载配置文件。 需要配置:spring.cloud.config.server.native.searchLocations跟spring.profiles.active=native。 路径配置格式:classpath:/, classpath:/config,file:./, file:./config。 3.2.1.4 共享配置给所有应用 基于文件的资源库 在基于文件的资源库中(i.e. git, svn and native),这样的文件名application 命名的资源在所有的客户端都是共享的(如 application.properties, application.yml, application-*.properties,etc.)。 属性覆盖 “spring.cloud.config.server.overrides”添加一个Map类型的name-value对来实现覆盖。 例如 spring: cloud: config: server: overrides: foo: bar 会使所有的配置客户端应用程序读取foo=bar到他们自己配置参数中。 3.2.2 健康指示器 通过这个指示器能够检查已经配置的EnvironmentRepository是否正常运行。 通过设置spring.cloud.config.server.health.enabled=false参数来禁用健康指示器。 3.2.3 安全 你可以自由选择任何你觉得合理的方式来保护你的Config Server(从物理网络安全到OAuth2 令牌),同时使用Spring Security和Spring Boot 能使你做更多其他有用的事情。 为了使用默认的Spring Boot HTTP Basic 安全,只需要把Spring Security 增加到classpath中(如org.springframework.boot.spring-boot-starter-security)。默认的用户名是“user”,对应的会生成一个随机密码,这种情况在实际使用中并没有意义,一般建议配置一个密码(通过 security.user.password属性进行配置)并对这个密码进行加密。 3.2.4 加密与解密 如果远程属性包含加密内容(以{cipher}开头),这些值将在通过HTTP传递到客户端之前被解密。 使用略 3.2.5 密钥管理 配置服务可以使用对称(共享)密钥或者非对称密钥(RSA密钥对)。 使用略 3.2.6 创建一个测试密钥库 3.2.7 使用多密钥和循环密钥 3.2.8 加密属性服务 3.3 可替换格式服务 配置文件可加后缀".yml"、".yaml"、".properties" 3.4 文本解释服务 /{name}/{profile}/{label}/{path} 3.5 嵌入配置服务器 一般配置服务运行在单独的应用里面,只要使用注解@EnableConfigServer即可嵌入到其他应用。 3.6 推送通知和总线 添加依赖spring-cloud-config-monitor,激活Spring Cloud 总线,/monitor端点即可用。 当webhook激活,针对应用程序可能已经变化了的,配置服务端将发送一个RefreshRemoteApplicationEvent。 3.7 客户端配置 3.7.1 配置第一次引导 通过spring.cloud.config.uri属性配置Config Server地址 3.7.2 发现第一次引导 如果用的是Netflix,则用eureka.client.serviceUrl.defaultZone进行配置。 3.7.3 配置客户端快速失败 在一些例子里面,可能希望在没有连接配置服务端时直接启动失败。可通过spring.cloud.config.failFast=true进行配置。 3.7.4 配置客户端重试 添加依赖spring-retry、spring-boot-starter-aop,设置spring.cloud.config.failFast=true。默认的是6次重试,初始补偿间隔是1000ms,后续补偿为1.1指数乘数,可通过spring.cloud.config.retry.*配置进行修改。 3.7.5 定位远程配置资源 路径:/{name}/{profile}/{label} "name" = ${spring.application.name} "profile" = ${spring.profiles.active} (actually Environment.getActiveProfiles()) "label" = "master" label对于回滚到之前的版本很有用。 3.7.6 安全 通过spring.cloud.config.password、spring.cloud.config.username进行配置。 答案来源于网络

养狐狸的猫 2019-12-02 02:18:34 0 浏览量 回答数 0

问题

CodePipeline快速入门:Java项目示例:构建并部署到ECS

行者武松 2019-12-01 21:55:12 1286 浏览量 回答数 0

回答

启动界面 在小程序开发者工具(简称 IDE)的启动界面,开发者可以新建项目、打开现有 项目、删除最近项目记录。 新建项目 新建项目类型分为两类:示例模板 与 空白脚手架。 示例模板项目 开放平台提供入门、UI、开放能力三类模板,内含大量示例代码(仍在持续更新 中),为开发者演示如何实现小程序各项能力(参见 快速示例)。新建步骤如 下: 1. 点击 模板选取 标签。 2. 点击需要创建的模板,然后点击 下一步;或者直接双击所需模板卡片。 3. 在 新建项目 页面: a. 设置 项目名称 与 项目路径; b. 点击 完成,进入主界面。 空白脚手架项目 空白脚手架仅包含最基础的文件结构。新建步骤如下: 1. 在左侧边栏选择 项目类型(例如支付宝小程序、淘宝商家应用等类型)。 2. 在 最近使用 列表中,点击 ➕ 卡片。 3. 在 新建项目 页面: a. 设置 项目名称 与 项目路径; b. 选配 后端服务:不启用云服务、小程序 Serverless 或 小程序云应用; c. 点击 完成,进入主界面。 打开项目 本地现有项目也有两种打开方式:选择最近项目 与 选择项目文件夹。 选择最近项目 在启动界面 最近使用 列表中,点击需要打开的项目,然后点击 打开;或者直接双 击所需项目卡片。 选择项目文件夹 1. 点击右上角的 打开项目,弹出文件窗口。 2. 导航至项目文件夹,点击 选择文件夹。 3. 在 打开本地项目 页面: a. 确认或修改 项目名称 与 项目类型; b. 点击 打开,进入主界面。 删除最近项目记录 如需维持启动界面整洁,首先右键点击希望清理的项目卡片,然后点击 删除。 注意:此项操作仅会清理启动界面记录,不会实际删除硬盘中的项目文件。 主界面 小程序开发者工具的主界面由 菜单栏、工具栏、功能面板、编辑器、调试器、模 拟器 组成。 主界面各区域简要说明: 1. 菜单栏:文件、编辑、窗口、工具、帮助等基础功能。 2. 工具栏:更改小程序类型与关联、显示/隐藏界面区域、真机调试与预览等功能。 3. 功能面板:切换文件树、搜索、git 管理、npm 管理、插件市场、实验室、云服务等 边栏。 4. 编辑器:输入与修改代码的区域。 5. 调试器:用于模拟器调试、真机调试、性能调试。 6. 模拟器:模拟运行小程序,便于快速预览、初步调试。 说明:使用工具栏中部三个按钮,可以显示或隐藏界面主要区域,其中 编辑器 与 调试器 无法同时隐藏。 工具栏 小程序开发者工具(简称 IDE)的工具栏位于主界面顶部,包含 IDE 中最常用的 主要功能。本文档从左至右介绍各项功能。 小程序 选择小程序的运行环境类型(默认为支付宝小程序),此外还支持淘宝、钉钉、高 德等运行环境(参见 多端支持)。 内容来源:https://developer.aliyun.com/article/756818?spm=a2c6h.12873581.0.dArticle756818.26162b70Su1GZy&groupCode=tech_library

KaFei 2020-04-27 13:35:52 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

云效快速入门

行者武松 2019-12-01 21:57:06 1576 浏览量 回答数 0

回答

本文档主要介绍如何在文件存储HDFS上搭建及使用Presto。 背景信息 Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto支持在线数据查询,包括Hive、Cassandra、关系数据库以及专有数据存储。 说明 在本文档中Presto是通过连接Hive的元数据服务来读取文件存储HDFS上的数据,在文件存储HDFS上使用Presto时需要额外配置一些依赖包,详细操作步骤请参见配置Presto。 准备工作 在文件存储HDFS上搭建和使用Presto,需要先完成以下准备工作。 开通文件存储HDFS服务并创建文件系统实例和挂载点,详情请参见HDFS快速入门。 在Hadoop集群所有节点上安装JDK。 版本不能低于1.8。 在Hadoop集群中配置文件存储HDFS实例,详情请参见挂载文件系统。 在Hadoop集群中安装Apache Hive,本文档中使用的Apache Hive版本为1.2.1。 下载Presto压缩包和presto-cli-xxx-executable.jar。 Presto下载地址:官方链接,在本文档使用Presto的版本为0.227。 配置Presto 您可以参见以下步骤配置Presto,Presto官方配置文档请参见Deploying Presto。 解压Presto压缩包到指定文件夹。 tar -zxvf presto-server-0.227.tar.gz -C /usr/local/ 在Presto解压目录下创建etc目录。 mkdir /usr/local/presto-server-0.227/etc 配置Node Properties。 创建etc/node.properties文件。 vim /usr/local/presto-server-0.227/etc/node.properties 在etc/node.properties文件中添加如下内容。 node.environment=production node.id=ffffffff-ffff-ffff-ffff-ffffffffffff node.data-dir=/var/presto/data 配置JVM Config。 创建etc/jvm.config文件。 vim /usr/local/presto-server-0.227/etc/jvm.config 在etc/jvm.config文件中添加如下内容。 -server -Xmx8G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError 配置Config Properties。 在本文档中将coordinator和worker配置在同一台机器上,您可以参见Presto官方文档将coordinator和worker配置到不同的机器。 创建etc/config.properties文件。 vim /usr/local/presto-server-0.227/etc/config.properties 在etc/config.properties中添加如下内容。 coordinator=true node-scheduler.include-coordinator=true http-server.http.port=8080 query.max-memory=5GB query.max-memory-per-node=1GB query.max-total-memory-per-node=2GB discovery-server.enabled=true discovery.uri=http://xx.xx.xx.xx:8080 #xx.xx.xx.xx为当前机器的IP地址 配置日志级别。 创建etc/log.properties文件。 vim /usr/local/presto-server-0.227/etc/log.properties 在etc/log.properties文件中添加如下内容。 com.facebook.presto=INFO 配置Catalog Properties。 创建etc/catalog文件夹。 mkdir /usr/local/presto-server-0.227/etc/catalog 创建etc/catalog/hive.properties文件。 vim /usr/local/presto-server-0.227/etc/catalog/hive.properties 在etc/catalog/hive.properties文件中添加如下内容。 connector.name=hive-hadoop2 hive.metastore.uri=thrift://xxxx:9083 #xxxx为启动hive元数据服务的IP地址 hive.config.resources=/usr/local/hadoop-2.7.6/etc/hadoop/core-site.xml #配置为您的Hadoop集群中core-site.xml文件的地址 编译并替换jar包。 Presto中以maven-shade-plugin的方式引入了Hadoop,使用relocation的方式对引入的Hadoop jar包地址进行重命名,因为文件存储HDFS的sdk与Hadoop共用了protobuf-xxx.jar包,在Presto通过hive metastore读取文件存储HDFS上的数据时,文件存储HDFS的sdk会获取不到Presto进行重命名地址的protobuf-xxx.jar包。为了避免兼容性问题,文件存储HDFS的sdk需要作为Presto的Hadoop的依赖项,并对Presto中引入的Hadoop的jar包hadoop-apache2-xxx.jar进行重新编译。 替换jar包_01替换jar包_02 查看您安装的Presto中的presto-hadoop-apache2版本。 在0.227版本的presto中对应的presto-hadoop-apache2版本为hadoop-apache2-2.7.4-5。 find /usr/local/presto-server-0.227/ -name hadoop-apache2* 下载presto-hadoop-apache2对应版本的源码,下载地址:官方链接。 git clone https://github.com/prestodb/presto-hadoop-apache2.git 打开源码中的/root/presto-hadoop-apache2-2.7.4-5/pom.xml文件。 vim /root/presto-hadoop-apache2-2.7.4-5/pom.xml 在/root/presto-hadoop-apache2-2.7.4-5/pom.xml文件中添加文件存储HDFS sdk的依赖项。本文档中使用的sdk的版本为 1.0.3。 com.aliyun.dfs aliyun-sdk-dfs 1.0.3 添加依赖项 编译presto-hadoop-apache2。 cd /root/presto-hadoop-apache2-2.7.4-5 mvn clean package -DskipTests 查看生成的hadoop-apache2-2.7.4-5.jar。 cd ~/presto-hadoop-apache2-2.7.4-5/target ll -h 查看 删除旧的hadoop-apache2-2.7.4-5.jar依赖包。 rm -f /usr/local/presto-server-0.227/plugin/raptor/hadoop-apache2-2.7.4-5.jar /usr/local/presto-server-0.227/plugin/accumulo/hadoop-apache2-2.7.4-5.jar /usr/local/presto-server-0.227/plugin/hive-hadoop2/hadoop-apache2-2.7.4-5.jar 将新的hadoop-apache2-2.7.4-5.jar依赖包拷贝到对应的目录下。 cp ~/presto-hadoop-apache2-2.7.4-5/target/hadoop-apache2-2.7.4-5.jar /usr/local/presto-server-0.227/plugin/raptor/ cp ~/presto-hadoop-apache2-2.7.4-5/target/hadoop-apache2-2.7.4-5.jar /usr/local/presto-server-0.227/plugin/accumulo/ cp ~/presto-hadoop-apache2-2.7.4-5/target/hadoop-apache2-2.7.4-5.jar /usr/local/presto-server-0.227/plugin/hive-hadoop2/ 将presto-cli-xxx-executable.jar复制到Presto安装的bin目录下重命名并赋予可执行权限。 cp ~/presto-cli-0.227-executable.jar /usr/local/presto-server-0.227/bin/ mv /usr/local/presto-server-0.227/bin/presto-cli-0.227-executable.jar /usr/local/presto-server-0.227/bin/presto chmod +x /usr/local/presto-server-0.227/bin/presto 验证Presto 启动Hive的元数据服务。 /usr/local/apache-hive-1.2.1-bin/bin/hive --service metastore 创建测试数据并加载到Hive中。 创建测试数据。 echo -e "test1\ntest2\ntest1\ntest2\ntest3\ntest4\ntest4\ntest5" > ~/test.txt 将测试数据上传到文件存储HDFS上。 hadoop fs -put ~/test.txt /presto 使用默认的数据创建test_data并加载数据。 hive> create external table test_data(word string) row format delimited fields terminated by '\n' stored as textfile location '/presto'; 查看数据是否加载成功。 hive> select * from test_data; 如果显示如下类似信息,则表示数据加载成功。 查看数据加载结果 使用Presto通过Hive读取文件存储HDFS上的数据并进行计算。 启动presto server。 /usr/local/presto-server-0.227/bin/launcher start 使用presto连接Hive。 /usr/local/presto-server-0.227/bin/presto --server localhost:8080 --catalog hive --schema default 读取文件存储HDFS上的数据。 presto:default> select * from test_data; 读取数据 进行word count计算。 presto:default> select word, count(*) from test_data group by word; word count计算

1934890530796658 2020-03-31 02:54:35 0 浏览量 回答数 0

回答

本文介绍在文件存储HDFS上搭建及使用Apache Flink的方法。 准备工作 在文件存储HDFS上使用Apache Flink,需要先完成以下准备工作。 说明 本文档的操作步骤中涉及的安装包版本号、文件夹路径,请根据实际情况进行替换。 开通文件存储HDFS服务并创建文件系统实例和挂载点,详情请参见HDFS快速入门。 在计算节点上安装JDK。 版本不能低于1.8。 在计算节点上安装Scala。 Scala下载地址:官方链接,其版本要与使用的Apache Flink版本相兼容。 下载Apache Hadoop压缩包。 Apache Hadoop下载地址:官方链接。建议您选用的Apache Hadoop版本不低于2.7.2,本文档中使用的Apache Hadoop版本为Apache Hadoop 2.7.2。 下载Apache Flink压缩包。 在文件存储HDFS上使用的Flink的版本必须为1.9.0及以上,Apache Flink下载地址:官方链接。本文档中使用的Flink版本为官方提供的预编译版本Flink 1.9.0。 配置Apache Hadoop 执行如下命令解压Apache Hadoop压缩包到指定文件夹。 tar -zxvf hadoop-2.7.2.tar.gz -C /usr/local/ 修改hadoop-env.sh配置文件。 执行如下命令打开hadoop-env.sh配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/hadoop-env.sh 配置JAVA_HOME目录,如下所示。 export JAVA_HOME=/usr/java/default 修改core-site.xml配置文件。 执行如下命令打开core-site.xml配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/core-site.xml 在core-site.xml配置文件中,配置如下信息,详情请参见挂载文件系统。 fs.defaultFS dfs://x-xxxxxxxx.cn-xxxxx.dfs.aliyuncs.com:10290 fs.dfs.impl com.alibaba.dfs.DistributedFileSystem fs.AbstractFileSystem.dfs.impl com.alibaba.dfs.DFS io.file.buffer.size 8388608 alidfs.use.buffer.size.setting true dfs.usergroupservice.impl com.alibaba.dfs.security.LinuxUserGroupService.class dfs.connection.count 16 修改mapred-site.xml配置文件。 执行如下命令打开mapred-site.xml配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/mapred-site.xml 在mapred-site.xml配置文件中,配置如下信息。 mapreduce.framework.name yarn 修改yarn-site.xml配置文件。 执行如下命令打开yarn-site.xml配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/yarn-site.xml 在yarn-site.xml配置文件中,配置如下信息。 yarn.resourcemanager.hostname xxxx yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.nodemanager.resource.memory-mb 16384 yarn.nodemanager.resource.cpu-vcores 4 yarn.scheduler.maximum-allocation-vcores 4 yarn.scheduler.minimum-allocation-mb 3584 yarn.scheduler.maximum-allocation-mb 14336 修改slaves配置文件。 执行如下命令打开slaves配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/slaves 在slaves配置文件中,配置如下信息。 node1 node2 配置环境变量。 执行如下命令打开/etc/profile配置文件。 vim /etc/profile 在/etc/profile配置文件中,配置如下信息。 export HADOOP_HOME=/usr/local/hadoop-2.7.2 export HADOOP_CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath) export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 执行如下命令使配置生效。 source /etc/profile 执行如下命令配置文件存储HDFS的SDK。 您可以单击下载文件存储HDFS的SDK(此处以aliyun-sdk-dfs-1.0.3.jar为例),将其部署在Apache Hadoop生态系统组件的CLASSPATH上,详情请参见挂载文件系统。 cp aliyun-sdk-dfs-1.0.3.jar /usr/local/hadoop-2.7.2/share/hadoop/hdfs 执行如下命令将${HADOOP_HOME}文件夹同步到集群的其他节点。 scp -r hadoop-2.7.2/ root@node2:/usr/local/ 验证Apache Hadoop配置 完成Apache Hadoop配置后,不需要格式化namenode,也不需要使用start-dfs.sh来启动HDFS相关服务。如需使用yarn服务,只需在resourcemanager节点启动yarn服务,具体验证Apache Hadoop配置成功的方法请参见验证安装。 编译flink-shade 下载 flink-shade源码到指定目录。 git clone https://github.com/apache/flink-shaded.git ~/flink-shade 修改flink-shade源码中的pom文件。 修改Hadoop版本为您的集群中使用的版本,在本文档中使用的Hadoop版本为2.7.2。 vim ~/flink-shaded/flink-shaded-hadoop-2-parent/pom.xml flink-shade_1 在依赖项中添加文件存储HDFS SDK,在本文档使用文件存储HDFS SDK版本为1.0.3。 vim ~/flink-shaded/flink-shaded-hadoop-2-parent/flink-shaded-hadoop-2/pom.xml ... com.aliyun.dfs aliyun-sdk-dfs 1.0.3 ... flink-shade_2 编译打包。 cd ~/flink-shaded mvn package -Dshade-sources 配置Apache Flink 执行如下命令解压Flink压缩包到指定文件夹。 tar -zxvf flink-1.9.0-bin-scala_2.11.tgz -C /usr/local/ 拷贝flink-shade编译的flink-shaded-hadoop-2-uber-x.y.z.jar到Flink的lib目录下。 cp ~/flink-shaded/flink-shaded-hadoop-2-parent/flink-shaded-hadoop-2-uber/target/flink-shaded-hadoop-2-uber-2.7.2-11.0.jar /usr/local/flink-1.9.0/lib/ 说明 在使用Apache Flink之前必须在您的集群环境变量中配置HADOOP_HOME,HADOOP_CLASSPATH和HADOOP_CONF_DIR,详情请参见配置Apache Hadoop中的步骤7:配置环境变量。 如果您使用的Flink版本中已经包含flink-shaded-hadoop-2-uber-x.y.z.jar,则需要使用编译flink-shade中编译的flink-shaded-hadoop-2-uber-x.y.z.jar进行替换。 如果您需要对Flink进行额外的配置,请参考官方文档:配置操作指南。 验证Apache Flink配置 使用Flink自带的WordCount.jar对文件存储HDFS上的数据进行读取,并将计算结果写入到文件存储HDFS,在测试之前需要先启动yarn服务。 生成测试数据。 此处使用Apache Hadoop 2.7.2自带的jar包hadoop-mapreduce-examples-2.7.2.jar中的randomtextwriter方法在文件存储HDFS上生成测试数据。 /usr/local/hadoop-2.7.2/bin/hadoop jar /usr/local/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar randomtextwriter -D mapreduce.randomtextwriter.totalbytes=10240 -D mapreduce.randomtextwriter.bytespermap=1024 -D mapreduce.job.maps=4 -D mapreduce.job.reduces=2 dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/input 其中,dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290为文件存储HDFS的挂载点,请根据您的实际情况替换。 查看在文件存储HDFS上生成的测试数据。 /usr/local/hadoop-2.7.2/bin/hadoop fs -cat dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/input/* 其中,dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290为文件存储HDFS的挂载点,请根据您的实际情况替换。 提交wordcount程序。 /usr/local/flink-1.9.0/bin/flink run -m yarn-cluster -yn 1 -yjm 1024 -ytm 1024 /usr/local/flink-1.9.0/examples/batch/WordCount.jar --input dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/input --output dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/output 其中,dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290为文件存储HDFS的挂载点,请根据您的实际情况替换。 查看在文件存储HDFS上的结果文件。 /usr/local/hadoop-2.7.2/bin/hadoop fs -cat dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/flink-test/output 其中,dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290为文件存储HDFS的挂载点,请根据您的实际情况替换。

1934890530796658 2020-03-31 02:53:23 0 浏览量 回答数 0

问题

从入门到精通 | 最实用Java学习路线,内含871节Java视频课程 【每周学习】

问问小秘 2020-05-27 10:17:21 12144 浏览量 回答数 4

问题

#职场 8期 程序员的付费课程怎么赚钱

游客ih62co2qqq5ww 2020-05-06 14:34:31 12 浏览量 回答数 1

问题

Docker怎么入门

boxti 2019-12-01 21:49:35 2878 浏览量 回答数 0

问题

程序员报错QA大分享(1)

问问小秘 2020-06-18 15:46:14 8 浏览量 回答数 1

回答

前言 这期我想写很久了,但是因为时间的原因一直拖到了现在,我以为一两天就写完了,结果从构思到整理资料,再到写出来用了差不多一周的时间吧。 你们也知道丙丙一直都是创作鬼才来的,所以我肯定不会一本正经的写,我想了好几个切入点,最后决定用一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套视频和资料,暖男石锤啊,这期是呕心沥血之作,不要白嫖了。 正文 在写这个文章之前,我花了点时间,自己臆想了一个电商系统,基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线。 Tip:请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次分析。 前端 你可能会会好奇,你不是讲后端学习路线嘛,为啥还有前端的部分,我只能告诉你,傻瓜,肤浅。 我们可不能闭门造车,谁告诉你后端就不学点前端了? 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的,那我觉得最基本的技术栈得熟悉和了解吧,丙丙现在也是偶尔会开发一下我们的管理系统主要是VUE和React。 在这里我列举了我目前觉得比较简单和我们后端可以了解的技术栈,都是比较基础的。 作为一名后端了解部分前端知识还是很有必要的,在以后开发的时候,公司有前端那能帮助你前后端联调更顺畅,如果没前端你自己也能顶一下简单的页面。 HTML、CSS、JS、Ajax我觉得是必须掌握的点,看着简单其实深究或者去操作的话还是有很多东西的,其他作为扩展有兴趣可以了解,反正入门简单,只是精通很难很难。 在这一层不光有这些还有Http协议和Servlet,request、response、cookie、session这些也会伴随你整个技术生涯,理解他们对后面的你肯定有不少好处。 Tip:我这里最后删除了JSP相关的技术,我个人觉得没必要学了,很多公司除了老项目之外,新项目都不会使用那些技术了。 前端在我看来比后端难,技术迭代比较快,知识好像也没特定的体系,所以面试大厂的前端很多朋友都说难,不是技术多难,而是知识多且复杂,找不到一个完整的体系,相比之下后端明朗很多,我后面就开始讲后端了。 网关层: 互联网发展到现在,涌现了很多互联网公司,技术更新迭代了很多个版本,从早期的单机时代,到现在超大规模的互联网时代,几亿人参与的春运,几千亿成交规模的双十一,无数互联网前辈的造就了现在互联网的辉煌。 微服务,分布式,负载均衡等我们经常提到的这些名词都是这些技术在场景背后支撑。 单机顶不住,我们就多找点服务器,但是怎么将流量均匀的打到这些服务器上呢? 负载均衡,LVS 我们机器都是IP访问的,那怎么通过我们申请的域名去请求到服务器呢? DNS 大家刷的抖音,B站,快手等等视频服务商,是怎么保证同时为全国的用户提供快速的体验? CDN 我们这么多系统和服务,还有这么多中间件的调度怎么去管理调度等等? zk 这么多的服务器,怎么对外统一访问呢,就可能需要知道反向代理的服务器。 Nginx 这一层做了反向负载、服务路由、服务治理、流量管理、安全隔离、服务容错等等都做了,大家公司的内外网隔离也是这一层做的。 我之前还接触过一些比较有意思的项目,所有对外的接口都是加密的,几十个服务会经过网关解密,找到真的路由再去请求。 这一层的知识点其实也不少,你往后面学会发现分布式事务,分布式锁,还有很多中间件都离不开zk这一层,我们继续往下看。 服务层: 这一层有点东西了,算是整个框架的核心,如果你跟我帅丙一样以后都是从事后端开发的话,我们基本上整个技术生涯,大部分时间都在跟这一层的技术栈打交道了,各种琳琅满目的中间件,计算机基础知识,Linux操作,算法数据结构,架构框架,研发工具等等。 我想在看这个文章的各位,计算机基础肯定都是学过的吧,如果大学的时候没好好学,我觉得还是有必要再看看的。 为什么我们网页能保证安全可靠的传输,你可能会了解到HTTP,TCP协议,什么三次握手,四次挥手。 还有进程、线程、协程,什么内存屏障,指令乱序,分支预测,CPU亲和性等等,在之后的编程生涯,如果你能掌握这些东西,会让你在遇到很多问题的时候瞬间get到点,而不是像个无头苍蝇一样乱撞(然而丙丙还做得不够)。 了解这些计算机知识后,你就需要接触编程语言了,大学的C语言基础会让你学什么语言入门都会快点,我选择了面向对象的JAVA,但是也不知道为啥现在还没对象。 JAVA的基础也一样重要,面向对象(包括类、对象、方法、继承、封装、抽象、 多态、消息解析等),常见API,数据结构,集合框架,设计模式(包括创建型、结构型、行为型),多线程和并发,I/O流,Stream,网络编程你都需要了解。 代码会写了,你就要开始学习一些能帮助你把系统变得更加规范的框架,SSM可以会让你的开发更加便捷,结构层次更加分明。 写代码的时候你会发现你大学用的Eclipse在公司看不到了,你跟大家一样去用了IDEA,第一天这是什么玩意,一周后,真香,但是这玩意收费有点贵,那免费的VSCode真的就是不错的选择了。 代码写的时候你会接触代码的仓库管理工具maven、Gradle,提交代码的时候会去写项目版本管理工具Git。 代码提交之后,发布之后你会发现很多东西需要自己去服务器亲自排查,那Linux的知识点就可以在里面灵活运用了,查看进程,查看文件,各种Vim操作等等。 系统的优化很多地方没优化的空间了,你可能会尝试从算法,或者优化数据结构去优化,你看到了HashMap的源码,想去了解红黑树,然后在算法网上看到了二叉树搜索树和各种常见的算法问题,刷多了,你也能总结出精华所在,什么贪心,分治,动态规划等。 这么多个服务,你发现HTTP请求已经开始有点不满足你的需求了,你想开发更便捷,像访问本地服务一样访问远程服务,所以我们去了解了Dubbo,Spring cloud。 了解Dubbo的过程中,你发现了RPC的精华所在,所以你去接触到了高性能的NIO框架,Netty。 代码写好了,服务也能通信了,但是你发现你的代码链路好长,都耦合在一起了,所以你接触了消息队列,这种异步的处理方式,真香。 他还可以帮你在突发流量的时候用队列做缓冲,但是你发现分布式的情况,事务就不好管理了,你就了解到了分布式事务,什么两段式,三段式,TCC,XA,阿里云的全局事务服务GTS等等。 分布式事务的时候你会想去了解RocketMQ,因为他自带了分布式事务的解决方案,大数据的场景你又看到了Kafka。 我上面提到过zk,像Dubbo、Kafka等中间件都是用它做注册中心的,所以很多技术栈最后都组成了一个知识体系,你先了解了体系中的每一员,你才能把它们联系起来。 服务的交互都从进程内通信变成了远程通信,所以性能必然会受到一些影响。 此外由于很多不确定性的因素,例如网络拥塞、Server 端服务器宕机、挖掘机铲断机房光纤等等,需要许多额外的功能和措施才能保证微服务流畅稳定的工作。 **Spring Cloud **中就有 Hystrix 熔断器、Ribbon客户端负载均衡器、Eureka注册中心等等都是用来解决这些问题的微服务组件。 你感觉学习得差不多了,你发现各大论坛博客出现了一些前沿技术,比如容器化,你可能就会去了解容器化的知识,像**Docker,Kubernetes(K8s)**等。 微服务之所以能够快速发展,很重要的一个原因就是:容器化技术的发展和容器管理系统的成熟。 这一层的东西呢其实远远不止这些的,我不过多赘述,写多了像个劝退师一样,但是大家也不用慌,大部分的技术都是慢慢接触了,工作中慢慢去了解,去深入的。 好啦我们继续沿着图往下看,那再往下是啥呢? 数据层: 数据库可能是整个系统中最值钱的部分了,在我码文字的前一天,刚好发生了微盟程序员删库跑路的操作,删库跑路其实是我们在网上最常用的笑话,没想到还是照进了现实。 这里也提一点点吧,36小时的故障,其实在互联网公司应该是个笑话了吧,权限控制没做好类似rm -rf 、fdisk、drop等等这样的高危命令是可以实时拦截掉的,备份,全量备份,增量备份,延迟备份,异地容灾全部都考虑一下应该也不至于这样,一家上市公司还是有点点不应该。 数据库基本的事务隔离级别,索引,SQL,主被同步,读写分离等都可能是你学的时候要了解到的。 上面我们提到了安全,不要把鸡蛋放一个篮子的道理大家应该都知道,那分库的意义就很明显了,然后你会发现时间久了表的数据大了,就会想到去接触分表,什么TDDL、Sharding-JDBC、DRDS这些插件都会接触到。 你发现流量大的时候,或者热点数据打到数据库还是有点顶不住,压力太大了,那非关系型数据库就进场了,Redis当然是首选,但是MongoDB、memcache也有各自的应用场景。 Redis使用后,真香,真快,但是你会开始担心最开始提到的安全问题,这玩意快是因为在内存中操作,那断点了数据丢了怎么办?你就开始阅读官方文档,了解RDB,AOF这些持久化机制,线上用的时候还会遇到缓存雪崩击穿、穿透等等问题。 单机不满足你就用了,他的集群模式,用了集群可能也担心集群的健康状态,所以就得去了解哨兵,他的主从同步,时间久了Key多了,就得了解内存淘汰机制…… 他的大容量存储有问题,你可能需要去了解Pika…. 其实远远没完,每个的点我都点到为止,但是其实要深究每个点都要学很久,我们接着往下看。 实时/离线/大数据 等你把几种关系型非关系型数据库的知识点,整理清楚后,你会发现数据还是大啊,而且数据的场景越来越多多样化了,那大数据的各种中间件你就得了解了。 你会发现很多场景,不需要实时的数据,比如你查你的支付宝去年的,上个月的账单,这些都是不会变化的数据,没必要实时,那你可能会接触像ODPS这样的中间件去做数据的离线分析。 然后你可能会接触Hadoop系列相关的东西,比如于Hadoop(HDFS)的一个数据仓库工具Hive,是建立在 Hadoop 文件系统之上的分布式面向列的数据库HBase 。 写多的场景,适合做一些简单查询,用他们又有点大材小用,那Cassandra就再合适不过了。 离线的数据分析没办法满足一些实时的常见,类似风控,那Flink你也得略知一二,他的窗口思想还是很有意思。 数据接触完了,计算引擎Spark你是不是也不能放过…… 搜索引擎: 传统关系型数据库和NoSQL非关系型数据都没办法解决一些问题,比如我们在百度,淘宝搜索东西的时候,往往都是几个关键字在一起一起搜索东西的,在数据库除非把几次的结果做交集,不然很难去实现。 那全文检索引擎就诞生了,解决了搜索的问题,你得思考怎么把数据库的东西实时同步到ES中去,那你可能会思考到logstash去定时跑脚本同步,又或者去接触伪装成一台MySQL从服务的Canal,他会去订阅MySQL主服务的binlog,然后自己解析了去操作Es中的数据。 这些都搞定了,那可视化的后台查询又怎么解决呢?Kibana,他他是一个可视化的平台,甚至对Es集群的健康管理都做了可视化,很多公司的日志查询系统都是用它做的。 学习路线 看了这么久你是不是发现,帅丙只是一直在介绍每个层级的技术栈,并没说到具体的一个路线,那是因为我想让大家先有个认知或者说是扫盲吧,我一样用脑图的方式汇总一下吧,如果图片被平台二压了。 资料/学习网站 Tip:本来这一栏有很多我准备的资料的,但是都是外链,或者不合适的分享方式,博客的运营小姐姐提醒了我,所以大家去公众号回复【路线】好了。 絮叨 如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。 如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。 丙丙发现在工作中发现我身边的人真的就是实力越强的越努力,最高级的自律,享受孤独(周末的歪哥)。 总结 我提到的技术栈你想全部了解,我觉得初步了解可能几个月就够了,这里的了解仅限于你知道它,知道他是干嘛的,知道怎么去使用它,并不是说深入了解他的底层原理,了解他的常见问题,熟悉问题的解决方案等等。 你想做到后者,基本上只能靠时间上的日积月累,或者不断的去尝试积累经验,也没什么速成的东西,欲速则不达大家也是知道的。 技术这条路,说实话很枯燥,很辛苦,但是待遇也会高于其他一些基础岗位。 所实话我大学学这个就是为了兴趣,我从小对电子,对计算机都比较热爱,但是现在打磨得,现在就是为了钱吧,是不是很现实?若家境殷实,谁愿颠沛流离。 但是至少丙丙因为做软件,改变了家庭的窘境,自己日子也向小康一步步迈过去。 说做程序员改变了我和我家人的一生可能夸张了,但是我总有一种下班辈子会因为我选择走这条路而改变的错觉。 我是敖丙,一个在互联网苟且偷生的工具人。 创作不易,本期硬核,不想被白嫖,各位的「三连」就是丙丙创作的最大动力,我们下次见! 本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。 该回答来自:敖丙

剑曼红尘 2020-03-06 11:35:37 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅