精华内容
下载资源
问答
  • 限于篇幅与作者水平有限,本文粗略的讲述了前端线上机器运维与部署的基础知识。本文采用了手动部署的方式,是为了让读者更清楚的知道前端部署的细节。 后续还有很多优化的事情可以做,比如如果node层会访问数据库...

    说到前端部署,可能大多数前端工程师在工作中都是使用的公司现成的部署系统,与SRE对接、一起完成前端的部署操作。如果我现在给你一台新注册的云主机,那么你应该怎么做才能把一个前端工程部署到一台云主机上,成为一个可以访问的网页呢?今天我们就来聊聊前端的部署~

    一、构成

    1、硬件

    首先,一个前端工程要变成一个能访问的服务或者网页,必须要跑在宿主机器上。我们需要寻找一个线上机器来当宿主机器,所幸国内提供云服务器ECS的大厂有很多,BAT、亚马逊提供的产品本质上没有很大的差别,我们根据自己的喜好进行选择即可。本文中,作者使用的是阿里云的主机,1核、2GB、1Mbps、Ubuntu 16.04 64位的机器。

    2、软件

    硬件申请好了之后,我们来聊聊最少需要安装哪些软件就能将服务跑起来。我们需要的软件有:nginx、nodejs、PM2、git。

    nginx:作为http服务器接受来自internet的请求,并将请求按配置规则转发给对应的端口。

    nodejs:在云主机上提供js的运行环境

    PM2:node应用的进程管理器

    git:将git仓库的代码远程拉取到云主机上

    二、安装

    (因为本文使用的线上机器系统是Ubuntu,故软件安装使用的是apt-get。若各位读者的机器是centOS,同义替换成yum即可)

    1、安装nvm

    • 首先安装必要的包

    sudo apt-get update

    sudo apt-get install build-essential libssl-dev

    • 然后使用wget安装nvm

    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash

    2、安装git

    sudo apt-get install git

    3、使用nvm安装node

    nvm install stable (安装最新的稳定版本)或

    nvm install 4.2.2 (安装具体的版本号)

    4、使用npm安装PM2

    npm install -g pm2

    5、手动安装nginx

    • 首先安装nginx依赖 pcre、openssl、zlib

    sudo apt-get install openssl libssl-dev

    sudo apt-get install libpcre3 libpcre3-dev

    sudo apt-get install zlib1g-dev

    • 然后手动安装nginx

    wget http://nginx.org/download/nginx-1.12.2.tar.gz

    tar zxvf nginx-1.12.2.tar.gz

    ./configure --prefix=/server/runtime/nginx/1.12.2 (prefix参数是自己设置的安装目标路径)

    make && make install

    三、目录设置

    细心的读者会感到好奇,我的nginx为什么不用apt-get直接安装,而是要自己动手安装呢?

    如果我使用apt-get来进行nginx安装,会自动将软件安装到usr目录下,后续版本的安装会覆盖之前的版本。如果我有在一台服务器上安装多个nginx版本的需求,如:Mainline version 和 Stable version,就需要手动安装来对nginx的版本进行物理划分。

    我的目录划分为:

    如图所示,在 / (根目录)下新建server目录,然后在server目录下新建app、compile、daemon和runtime四个文件夹。

    1、app

    app目录下存放开发工程的代码,通过git clone将git仓库的代码pull下来。当服务出现问题时,可以人工登录云主机,在app目录下通过手动的方式重启服务。

    2、compile

    compile目录下存放下载的tar包以及从tar包解压出来的文件。如果下载的软件多了,为了便于管理,可以按软件分文件夹存放。

    3、runtime

    runtime目录是软件安装的目标路径,compile目录下的nginx安装包通过configure指令安装到runtime目录下。runtime内部目录结构如图:

    如图所示,为了便于管理,runtime目录下根据软件分文件夹(nginx),再根据版本分文件夹(1.12.2)。

    4、daemon

    daemon被称为守护进程,daemon目录下存放的是会一直运行的服务,如nginx。daemon内部目录结构如图:

    如图,nginx目录下先根据版本(1.12.2)进行划分,后根据端口(80)进行划分。在多版本nginx、多端口并存的场景下,如果我要快速定位nginx的问题,这种划分会给运维带来极大的便利。需要寻找对应版本和对应端口时,只要寻找文件目录即可。

    conf文件夹的内容是从nginx安装目录下的conf文件夹整个复制过来的,我们自己业务需要的设置就直接修改conf文件夹内的配置文件即可。如此配置的好处在于将自己的配置与nginx预设配置分离,根本不用担心把nginx玩坏了:)

    log文件夹内存放nginx的运行日志,以文件的方式进行存储。

    除此之外,在80文件夹下还有两个自己写的脚本文件:up、down。up脚本的作用是对nginx进行拉起,down脚本的作用在于将现运行的nginx kill。这里将拉起操作和kill操作写成脚本,便于运维人员快速、准确的对nginx进行操作。

    如此进行server文件夹的目录设置,将服务所需软件与机器的通用软件进行了分离,不仅便于云主机的日常维护,同时当需要整个删除服务的时候,直接删除server文件夹即可简单清除。

    四、步骤

    1、阿里云机器申请好后,在机器上建立一个账号,便于之后用ssh的方式登录。

    2、linux机器的提示符个人觉得不好用,可以选用apt-get安装zsh和oh-my-zsh来提升shell的便利性(逼格)。

    3、在 / (根目录)下新建server目录,在server目录下新建app、compile、daemon、runtime四个文件夹。

    4、用apt-get安装nvm、git;用nvm安装nodejs;用npm安装PM2;用手动方式安装nginx。

    5、在daemon目录下新建conf和log文件夹,log存放日志文件,conf里面的内容是从nginx原生复制过来的,根据业务需要修改里面的nginx.conf文件。

    6、阿里云主机默认是不开端口的,需要自己在console控制台中开启对应端口(80)。

    7、在app文件夹下使用git clone拉代码,并使用PM2指令启动服务。

    8、在daemon文件夹下写nginx配置文件,并启动nginx处理http请求。

    五、代码

    1、PM2的配置文件代码

    2、up脚本代码

    3、down脚本代码

    4、nginx配置文件代码

    六、总结

    限于篇幅与作者水平有限,本文粗略的讲述了前端线上机器运维与部署的基础知识。本文采用了手动部署的方式,是为了让读者更清楚的知道前端部署的细节。

    后续还有很多优化的事情可以做,比如如果node层会访问数据库(MongoDB),那么推荐加入MemCache缓存;为了提高部署的快捷性,可以写一个部署脚本,一次性将全部部署操作都使用脚本进行等等。

    对此感兴趣或自己实践中遇到问题的观众老爷欢迎与我联系~邮箱:wangxinghang@meituan.com


    展开全文
  • mPaas 研发流程和线上运维介绍

    千次阅读 2021-02-09 11:49:03
    在我们日常运维过程中发现,大部分用户对蚂蚁的研发流程比较感兴趣,特别是在上百个开发者同时在一个app的环境内进行高效开发,技术选型、研发流程还有线上运维是怎么做的,成为大家关注的重点。以下分享我的一些...
    简介:mPaas 研发流程和线上运维介绍

    image.png

    1. 背景

    金融级移动开发平台 mPaaS[1](Mobile PaaS)为 App 开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动应用。在我们日常运维过程中发现,大部分用户对蚂蚁的研发流程比较感兴趣,特别是在上百个开发者同时在一个app的环境内进行高效开发,技术选型、研发流程还有线上运维是怎么做的,成为大家关注的重点。以下分享我的一些理解。

    2. 技术选型

    目前研发模式分为Native模式和动态化模式两种,其中Native技术栈主要覆盖基础中间件,还有核心高保链路或者变更很少的一些基础页面,比如收银台,登录页面,付款码等。其他场景业务一般会通过动态化的方式,解耦客户端版本发布。其中,在线H5一般适用于活动营销活动,离线包场景一般用于有固定入口的常驻业务,如果有跨端多投场景,一般会选择小程序,通过小程序的跨端发布实现多端投放。

    1.png

    3. 研发流程

    2.png

    1.需求阶段:主要是需求评审,大家意见达成一致。
    2.开发阶段:代码开发,代码合并以及打包等
    3.测试阶段:测试案例的编写,功能测试,兼容性测试等
    4.集成阶段:代码改动申请进对应的集成基线,进行集成验证
    5.发布阶段: 通过内灰,外灰,渠道包全量,站内全量实现发布上线

    4. 分支管理

    原则:基于分支开发,基于主干发布

    3.png

    1. 变更操作流程

    1) 创建变更
    2) 选择仓库,基于 Master 创建分支
    3) 在分支上打工程包,打安装包,自测(可以基于变更分支创建 feature 分支,并行开发)
    4) 合并到 Master 打包、提测
    5) 申请集成、发布

    2. 独立发布

    主要用做区别于日常变更的独立发布迭代,比如单独针对某个厂商做的预装包适配迭代,就适用于独立发布。

    3. 多App管理(双Master)

    使用场景:聚宝、香港支付宝、口碑、支付宝共用同一个代码仓库,同一代码库需要多app并行,需要有自己独立的master分支,在合并的时候,在不同的app端进行多主干的合并。

    5. 线上运维

    1. 多维度灰度发布能力

    MDS提供多维度的发布模式,发布前需要经过白名单灰度,内部灰度,外部灰度,百分比灰度等多层次灰度,不断扩大灰度范围,直到Crash率,ANR率等稳定性指标达标后才进行全量的发布。

    2. 多角度线上监控

    MAS提供了多角度的实时监控指标监控,包括Crash率,ANR率等核心指标,同时这些核心的指标上报都是通过实时通道完成的上报,方便问题的快速发现。

    3. 舆情监控

    除了以上一些核心指标的监控,同时提供了舆情的监控平台,开发者可以设置自己关注的关键字,在灰度期间去查看相关产品的线上用户舆情,真实的反馈用户问题。

    4. 线上问题定位

    通过上述的多渠道发现问题后,首先可以通过客户端上报的行为日志进行分析,同时也可以通过MAS提供的日志拉取功能,拉取用户的详细日志进行进一步的诊断分析。

    5. 自动容灾降级

    在积累了多年的客户端问题处理经验后,客户端SDK内部也沉淀了一套自恢复的容灾降级策略。比如对于多次启动后重复闪退的用户,客户端会尝试在启动后清除app私有目录下的一些文件,解决由于脏数据导致的极端重复闪退。

    6. 线上问题修复

    针对不同的问题提供了不同的能力实现动态修复,比如对Native模块实现动态修复的hotpatch机制。

    参考文档

    [1] mPaaS平台:https://www.aliyun.com/product/mobilepaas/mpaas

    我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术。

    原文链接:https://developer.aliyun.com/article/781274?

    版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
    展开全文
  • 在我们日常运维过程中发现,大部分用户对蚂蚁的研发流程比较感兴趣,特别是在上百个开发者同时在一个app的环境内进行高效开发,技术选型、研发流程还有线上运维是怎么做的,成为大家关注的重点。以下分享我的一些...

    mPaas研发流程和线上运维介绍

    一 背景

       金融级移动开发平台 mPaaS(Mobile PaaS)为 App 开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动应用。在我们日常运维过程中发现,大部分用户对蚂蚁的研发流程比较感兴趣,特别是在上百个开发者同时在一个app的环境内进行高效开发,技术选型、研发流程还有线上运维是怎么做的,成为大家关注的重点。以下分享我的一些理解。

    二 技术选型

    目前研发模式分为Native模式和动态化模式两种,其中Native技术栈主要覆盖基础中间件,还有核心高保链路或者变更很少的一些基础页面,比如收银台,登录页面,付款码等。其他场景业务一般会通过动态化的方式,解耦客户端版本发布。其中,在线H5一般适用于活动营销活动,离线包场景一般用于有固定入口的常驻业务,如果有跨端多投场景,一般会选择小程序,通过小程序的跨端发布实现多端投放。

    image.png

    三 研发流程

    image.png

    1.需求阶段:主要是需求评审,大家意见达成一致。

    2.开发阶段:代码开发,代码合并以及打包等

    3.测试阶段:测试案例的编写,功能测试,兼容性测试等

    4.集成阶段:代码改动申请进对应的集成基线,进行集成验证

    5.发布阶段: 通过内灰,外灰,渠道包全量,站内全量实现发布上线


    四 分支管理

    原则:基于分支开发,基于主干发布

    image.png


    1. 变更操作流程

    1. 创建变更
    2. 选择仓库,基于 Master 创建分支
    3. 在分支上打工程包,打安装包,自测(可以基于变更分支创建 feature 分支,并行开发)
    4. 合并到 Master 打包、提测
    5. 申请集成、发布

    2. 独立发布

    主要用做区别于日常变更的独立发布迭代,比如单独针对某个厂商做的预装包适配迭代,就适用于独立发布。

    3. 多App管理(双Master)

    使用场景:聚宝、香港支付宝、口碑、支付宝共用同一个代码仓库,同一代码库需要多app并行,需要有自己独立的master分支,在合并的时候,在不同的app端进行多主干的合并。


    五 线上运维

    1. 多维度灰度发布能力

     MDS提供多维度的发布模式,发布前需要经过白名单灰度,内部灰度,外部灰度,百分比灰度等多层次灰度,不断扩大灰度范围,直到Crash率,ANR率等稳定性指标达标后才进行全量的发布。

    2. 多角度线上监控

    MAS提供了多角度的实时监控指标监控,包括Crash率,ANR率等核心指标,同时这些核心的指标上报都是通过实时通道完成的上报,方便问题的快速发现。

    3. 舆情监控

      除了以上一些核心指标的监控,同时提供了舆情的监控平台,开发者可以设置自己关注的关键字,在灰度期间去查看相关产品的线上用户舆情,真实的反馈用户问题。

    4. 线上问题定位

     通过上述的多渠道发现问题后,首先可以通过客户端上报的行为日志进行分析,同时也可以通过MAS提供的日志拉取功能,拉取用户的详细日志进行进一步的诊断分析。

    5. 自动容灾降级

     在积累了多年的客户端问题处理经验后,客户端SDK内部也沉淀了一套自恢复的容灾降级策略。比如对于多次启动后重复闪退的用户,客户端会尝试在启动后清除app私有目录下的一些文件,解决由于脏数据导致的极端重复闪退。

    6. 线上问题修复

    针对不同的问题提供了不同的能力实现动态修复,比如对Native模块实现动态修复的hotpatch机制。

    展开全文
  • 实际的开发过程中,运维极少参与一个项目的上线以及日常的管理。这样对于开发的要求就上升一个层次,线上遇到相关问题就需要立马清楚相关问题的解决方案,以及相关命令执行的意义。从而快速精准的定位线上问题。接...

    1:DevOps

    大厂的运维基本都是通过运维工具赋能开发。实际的开发过程中,运维极少参与一个项目的上线以及日常的管理。这样对于开发的要求就上升一个层次,线上遇到相关问题就需要立马清楚相关问题的解决方案,以及相关命令执行的意义。从而快速精准的定位线上问题。接下来梳理一下日常工作过程中的常用命令,以备急用。

    2:组件的常用命令

    1:线上问题常用命令

    jsatck 处理线上问题
    
    ##查找进程里面cpu占用最高的线程
    top -Hp  pid
    ##top 线程
    printf "%x\n" 21742
    ## 建议使用root权限                          
    jstack  pid | grep 54ee
    ##查找大于800m的文件
    find . -type f -size +800M
    
    ##查找大文件夹
    du -hm --max-depth=2 | sort -nr | head -12
    
    ##查看nginx 请求最多ip
    cat /***/nginx/logs/access.log|awk '{print $1,$2}'sort|uniq -c|sort -rn -k1|head -3
    
    ## nohup 启动线上任务
    nohup java -jar publish_online.jar  --server.port=8106 &>/opt/data/xxx_8106.log &
    
    ## 查找/opt/shell目录下以及子目录包含redis关键词
    grep  -ril "redis" /opt/shell/*


    2:hadoop常用命令

    ##查看集群状态
    hdfs dfsadmin -report
    
    ##查看目录下的文件
    hadoop dfs  -ls  /user/hive/
    
    ## hdfs删除快照 
    hdfs dfs -deleteSnapshot /user/hive/hive-snapshot-20210509
    
    下载数据块
    hadoop fs -get /user/hive/warehouse/ods.db/table_name/part-00021-d20b1d30-dce1-4a38-a0c1-2b4ef68b7da8-c000.snappy.orc  ./
    
    #下载Yarn日志
    yarn logs -applicationId application_1606201254014_1003     > application_1606201254014_1003.txt
    
    #查看正在写入文件
    hdfs fsck /user/events -openforwrite
    
    #恢复文件租约
    hdfs debug recoverLease -path /user/hive/warehouse/app.db/test_order_sample1/order_sample -retries 3
    
    ## 将edtis目录下二进制文件改为xml,可以伪装相关命令处理
    hdfs oev -i edits_0000000001177152591-0000000001177162768 -o edits_0000000001177152591-0000000001177162768.xml
    
    ## 将xml改为 二进制文件,可以伪装相关命令处理
    hdfs oev -i edits_0000000001177152591-0000000001177162768.xml -o edits_0000000001177152591-0000000001177162768 -p binary
    
    ##检查hdfs坏的数据块
    hadoop fsck /user -files -blocks -locations
    
    ##删除坏的block
    hadoop fsck -rm /user/spark/sparkstreamingcheckpoint/checkpoint-1517487380000
    
    
    ##统计文件下数据块
    hdfs dfs -count /user/hive/warehouse/dws.db/*/


    3:kafka常用命令

    ##518400000 为毫秒,转化一下即为天数
    kafka-configs --zookeeper zkhost:2181 --alter --entity-name topic_name --entity-type topics --add-config retention.ms=518400000
    
    ##设置某一个kafka 对应的topic 永久存储
    kafka-configs --zookeeper zkhost:2181 --alter --entity-name topic_name --entity-type topics --add-config retention.ms=-1
    
    ## 重置kafka的消费时间节点(注意时区)
    kafka-consumer-groups --bootstrap-server kafkahost:9092 --group event_tag --reset-offsets --topic topic_name --execute --to-datetime 2021-04-23T08:20:00.000
    
    ## 重置kakfa的 offset
    kafka-consumer-groups --bootstrap-server kafkahost:9092 --group event_tag --topic topic_name --execute --reset-offsets --to-offset 5425016603
    
    ## 查看所有的topic 
    kafka-topics --list   --zookeeper zkhost:2181
    
    ## 删除指定的 topic 
    kafka-topics --delete --zookeeper zkhost:2181 --topic  topic_name
    
    ## 调整kafka的分区以及副本数
    kafka-topics --alter --zookeeper zkhost:2181 --topic topic_name --partitions 10  --replication-factor 2
    
    ##重置offset 最早
    kafka-consumer-groups --bootstrap-server kafkahost:9092 --group group_name --reset-offsets --topic topic_name --to-earliest --execute
    
    ##重置offset 最近
    kafka-consumer-groups --bootstrap-server kafkahost:9092 --group group_name --reset-offsets --topic topic_name --to-latest --execute

    4:elasticsearch常用命令

    
    ## elasticsearch index 添加字段
    POST /ex_index/_mapping
    {
     "properties" : {
          "last_buy_time": {
             "type" : "date",
             "format" : "epoch_millis"
          }
        } 
    }
    
    ##装插件
    bin/elasticsearch-plugin install analysis-icu
    
    ## 安装elasticsearch-sql  通过 curl elasticsearch 查询的结果 (直接返回结果)
    curl -s -H "Content-Type: application/json" -XGET ip:9200/_sql -d "select sum(install_device_count) as total from table_name where hour=9 and staticdate='2021-03-09' and channel_number='oppo'" |jq '.aggregations.total.value'
    
    ##elasticsearch 根据 id 删除数据
    DELETE /es_index/_doc/id
    
    ##修改 eleaticsearch index 副本数
    curl -XPUT  -H "Content-Type:application/json" http://ip:9200/ex_index/_settings  -d '{ "index" : { "number_of_replicas" : "0" }}'
    
    ## 刷新os_cache里面的segment 写入文件的时间
    curl -XPUT  -H "Content-Type:application/json" http://ip:9200/ex_index/_settings  -d '{ "index" : { "refresh_interval" : "60s" }}'
    
    ##elasticsearch 写入translog 异步
    curl -XPUT  -H "Content-Type:application/json" http://ip:9200/ex_index/_settings  -d '{ "index" : { "translog": { "durability" : "async" }}}'
    
    ## 查看elasticsearch es_index mapping
    GET  es_index/_mapping
    
    ## 查看elasticsearch es_index _settings
    GET  es_index/_settings
    
    ## 查询某一个范围内的数据
    POST ex_index/_search
    {
      "query":{
        "range" : {
          "staticdate" : {
            "from" : "2020-12-06",
            "to" : "2020-12-06",
            "include_lower" : true,
            "include_upper" : true,
            "boost" : 1.0
          }
        }
      }
      ,
      "size":20
    }
    
    ## bluk load 写入
    POST _bulk
    { "create" : { "_index" : "bulk_index", "_id" : "1" } }             
    { "Job" : "Linux Ops" }                                             
    { "delete" : { "_index" : "bulk_index", "_id" : "2" } }            
    { "update" : { "_id": "1", "_index" : "bulk_index"  } }             
    { "doc" : {"name" : "xuweiliang"} }                                 
    { "index" : {"_index" : "bulk_index", "_id" : "1" } }               
    { "name" : "xuweiliang" }
    { "create" : { "_index" : "bulk_index", "_id" : "2" } }            
    { "name" : "xuweiliang" , "Age" : 25 }
    { "delete" : { "_index" : "bulk_index", "_id" : "2" } }    
    
    ## 通过function_score 查询打分
    POST es_score_test/_search
      {
      "query": {
        "function_score": {
          "query": {
            "match": {
              "category_id":1
            }
          },
          "script_score": {
            "script": "return doc ['second_nature_id'].value == 20 ? 1.1 : 0.5"
          }
          
        }
      }
    }


    5:hbase常用命令

    ## hbase bulk 导入数据
    hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /data/hfile/${hbaseFileDir} "${tableName}" >> /home/bigdata/logs/hbase-${date}.log 2>&1
    
    ## hive 创建hbase 外表
    create table `dws.table_name`(
    `rowkey` string  COMMENT  'rowkey',
    `userid`  string  COMMENT  'userid',
    `deviceid`  string  COMMENT  'deviceid' ,
    `last_login_time`  string  COMMENT  'last_login_time',
    `use_count`  INT  COMMENT  'use_count',
    `reserve1`  string  COMMENT  '预留字段1',
    `reserve2`  string  COMMENT  '预留字段2' 
    ) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH 
    SERDEPROPERTIES ("hbase.columns.mapping"= 
    ":key, 
    cf:userid, 
    cf:deviceid, 
    cf:last_login_time, 
    cf:use_count, 
    cf:reserve1, 
    cf:reserve2) TBLPROPERTIES ("hbase.table.name" = "table_name");
    
    ##创建hbase表,指定压缩方式,预分区
    create 'ads:table_name', {NAME => 'cf', COMPRESSION => 'SNAPPY' , VERSIONS => 3},SPLITS => ['10','15','20','25','30','35','40','45','50']


     6:flink常用命令

    nohup flink run   -m yarn-cluster  -yjm 1024m -ytm 2048m -ynm SyncStream -ys 1  -yqu queueName -c com.xxx.SyncStream  /data/sync-datapretreatment.jar $1 > /data/SyncStream.log 2>&1 &


    7:spark常用命令

    ## 设置执行队列
    set spark.yarn.queue=root.default;
    set spark.app.name=merge;
    
    ##动态资源
    set spark.dynamicAllocation.maxExecutors=10; 
    set spark.dynamicAllocation.enabled=false;
    
    ##分区设置
    set hive.exec.max.dynamic.partitions=10000;
    set hive.exec.max.dynamic.partitions.pernode=10000;
    set hive.exec.dynamic.partition=true; 
    set hive.exec.dynamic.partition.mode=nonstrict; 
    
    ##执行资源
    set spark.executor.instances=5;
    set spark.executor.memory=6g;
    set spark.driver.memory=3g; 
    set spark.executor.cores=4; 
    set spark.memory.offHeap.size=2g;
    #文件合并自适应
    set spark.sql.adaptive.shuffle.targetPostShuffleInputSize=134217728;
    set spark.sql.adaptive.enabled=true;
    
    ## 后台常驻提交spark 任务
    nohup spark-submit  --master yarn --deploy-mode cluster --driver-memory 3g /opt/product/sparkjob/datacalculate.jar  >> /opt/product/sparkjob/log/datacalculate.log 2>&1 &


     8:kylin常用命令(清理小文件)

    ##检查哪些资源可以清理,(--delete false)不会删除任何文件:
    export KYLIN_HOME=/path/to/kylin_home
    ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.StorageCleanupJob --delete false
    
    
    ##可以抽查相关文件来检查它们是否还在使用,确认没有问题以后,加上'–delete true'选项进行清理。
    ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.StorageCleanupJob --delete true
    完成后,Hive 里的中间表, HDFS 上的中间文件及 HBase 中的 HTables 都会被移除。
    
    
    ## 如果您想要删除所有资源;可添加 '–force true' 选项:
    ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.StorageCleanupJob --force true --delete true
    完成后,Hive 中所有的中间表, HDFS 上所有的中间文件及 HBase 中的 HTables 都会被移除。


     9:clickhouse常用命令

    ##令行连接
    clickhouse-client -m --port 9002 -u default --password xxx  -h xxx
    
    ##表添加字段
    alter table table_name on cluster cluser_name modify column user_name Nullable(String);
    
    #设置本地表 TTL
    ALTER TABLE default.tablename on cluster  cluser_name modify TTL staticdate + INTERVAL 1 Year;
    
    ##删除集群数据
    clickhouse-client --port 9002 -u default --password xxx  -h 127.0.0.1 --query "alter table default.table_name on cluster cluser_name delete where staticdate >= '${1}'"
    
    ## 创建本地表
    CREATE TABLE default.tablename on cluster cluser_name
    (
        distinct_id String,
        event String,
        staticdate Date,
        project String,
        event_date_time Nullable(DateTime)
    )
        ENGINE = MergeTree
            PARTITION BY formatDateTime(staticdate, '%Y-%m')
            ORDER BY (event, staticdate,project, javaHash(distinct_id))
            SETTINGS index_granularity = 8192
                ,storage_policy = 'hdd_in_order';
      
    ## 创建分布式表
    CREATE TABLE default.tablename_all on cluster cluser_name
    (
        distinct_id String,
        event String,
        staticdate Date,
        project String,
        event_date_time Nullable(DateTime)
    ) ENGINE = Distributed('cluser_name', 'default', local_table_name, rand());


    10:redis常用命令

    ##redis 清除缓存(慎用)
    redis-cli -p 6379 -a '密码' -n 0 keys "*" | xargs redis-cli -p 6379 -a '删除xxx开头key' -n 0 del
    
    ## 查询bigkey
    redis-cli -h ip -p port -a 密码 --bigkeys -i 0.01

    3:总结


    熟记线上常用命令只能加深你对组件的认识,线上的问题处理也需要你深入理解相关业务场景。把业务场景的理解与技术解决方案结合起来,相信你在处理相关问题的时候会游刃有余。 临时整理,可能存在一定的遗漏,后续持续不断补充。
     

    展开全文
  • 摘要:墨天轮数据库周刊第41期发布啦,...OGG日常运维及故障处理;MySQL sysbench压测;Python自动生成巡检报告;PG备份恢复……热门资讯1、DB-Engines 9月数据库排名:ClickHouse一路猛冲,Redis坐稳第七【摘要】DB...
  • 作为和普通消费者结合最紧密的业态,自2017年...伴随零售企业的数字化升级,业务呈现互联网化,这给传统的IT系统支撑提出了严峻的挑战。零售业亟需IT提供更加及时快速的响应,应对线上突如其来的高并发,更有效价值...
  • 作为和普通消费者结合最紧密的业态,自2017年起,零售和互联网的结合...零售业亟需IT提供更加及时快速的响应,应对线上突如其来的高并发,更有效价值的销售行为和服务,打通线上和线下,为零售业务的正常运转和精细...
  • 运维日常工作

    2020-03-25 23:13:30
    运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常。 在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术。 运维又包括很多种,有...
  • 【导读】Ceph 日常运维中有几类常见问题,社区日前组织Ceph领域专家进行了线上的答疑交流,对社区会员提出的部分典型问题进行了分享解答,以下是分享内容,希望能为大家提供答案和一些参考。 Ceph是一个可靠地、自动...
  • 干货文档 [1、《 OGG日常运维及故障处理》- 尹涛.pdf] 【摘要】本文档主要描述日常工作中OGG的使用场景,以及一些基本常出问题的故障的处理。Oracle Golden Gate(简称OGG)提供异构环境下数据的实时捕捉、变换、...
  • 众彩纷呈的概念背后实际上仍然离不开最基础的IT系统,而IT系统正在向更大规模、更复杂、更高级的方向演进,而越来越复杂的系统,对运维的要求就越来越高,海量业务通常需要高实时处理,并且更加关注用户体验,重视...
  • 常见延迟问题定位与分析,主要分析了Redis常见的导致变慢的场景以及问题定位和分析,主要是由业务使用不合理和运维不当导致的。 ​ 我们在了解了导致Redis变慢的原因之后,针对性地优化,就可以让Redis稳定发挥出更...
  • 作者介绍:黄龙,网易易盾资深安全工程师,专注于互联网安全,擅长安全攻防对抗和甲方...除了对外的沟通和业务对接相关工作,大部分安全运维日常工作相对固定,如漏洞审核、安全产品运维、日志审计和应急响应等...
  • 新冠肺炎疫情的突然爆发,让社会各行业进入了“非常状态”,其中,保险业也面临着巨大的挑战:面谈沟通、线下交流等日常保险业务拓展动作,都因为疫情受到了影响。虽然保险业过往一直在布局数字化转型,将业务转向...
  • 互联网运维工作

    2021-02-25 18:13:54
    运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强,进行日常巡检发现服务可能存在的隐患,对整体架构进行优化以屏蔽常见的运行故障,多数据中接入提高业务的容灾能力,通过监控、日志...
  • 前言 之前或多或少分享过一些内存模型、对象创建之类的内容,其实大部分人看完都...直到有一天你会碰到线上奇奇怪怪的问题,如: 线程执行一个任务迟迟没有返回,应用假死。 接口响应缓慢,甚至请求超时。 CPU 高...
  • linux运维高薪职业及任职要求梳理

    千次阅读 2016-11-20 13:37:37
    厚本金融招聘 运维工程师 15k-25k ... 岗位职责: 1、负责系统的安装、配置、管理、优化及日常运维工作; ...2、负责系统的测试与发布工作,...4、负责公司线上服务器的日常运维工作,数据的备份; 5、负责公司数据库
  • 运维

    千次阅读 2017-11-10 19:30:34
    运维 运维,这里指互联网运维,通常属于技术部门,与研发、测试、系统管理同为互联网产品技术支撑的4大部门,这个划分在国内和国外以及大小公司间都会多少有一些不同。 一个互联网产品的生成一般经历的过程是...
  • 作者简介:黄伟俊(henry)腾讯高级运维工程师,多年研发与运维工作经验。专注(移动端+服务端)性能管理,大数据分析领域的探索与实践。引言当前,用户体验已成为一种新的产品价值。当技术实现不再是产品核心竞争力...
  • 运维方向

    千次阅读 2019-01-13 22:08:15
    运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强,进行日常巡检发现服务可能存在的隐患,对整体架构进行优化以屏蔽常见的运行故障,多数据中接入提高业务的容灾能力。通过监控、日志...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,315
精华内容 2,926
关键字:

线上业务日常运维