zoukankan      html  css  js  c++  java
  • 【转】Linux中多线程wait使用注意

    使用管道生成的while,是无法进行并发管理的

     
    hdfs dfs -rmr $cdns_hadoop_base_dir/dt=$ydate
    hdfs dfs -mkdir $cdns_hadoop_base_dir/dt=$ydate
    cat nodeList| while read nodename 
    do
        hdfs dfs -mkdir $cdns_hadoop_base_dir/dt=$ydate/node=$nodename
        ls *$nodename*lzo > cdnsFileListLzo
        while read query_log
        do
        (    hdfs dfs -put $query_log $cdns_hadoop_base_dir/dt=$ydate/node=$nodename
            rm $query_log -rf
            yarn jar ${hadooplzojar} ${hadooplzoclass} $cdns_hadoop_base_dir/dt=$ydate/node=$nodename/$query_log ) &
        done < cdnsFileListLzo
    wait
    done

     

    里面用小括号括住代码块。。。

    在处理日志的时候,采用管道多线程,怎么都实现不了wait功能,经上篇文章才知道,使用管道生成的while,无法进行并发管理。

    while read query_log
        do
        (    hdfs dfs -put $query_log $cdns_hadoop_base_dir/dt=$ydate/node=$nodename
            rm $query_log -rf
            yarn jar ${hadooplzojar} ${hadooplzoclass} $cdns_hadoop_base_dir/dt=$ydate/node=$nodename/$query_log ) &
        done < cdnsFileListLzo

    修改为上述方式,完美解决问题。。。

    OVER

  • 相关阅读:
    监控体系(二)
    piwik安装部署
    smokeping安装部署
    监控体系(一)
    学习zabbix(九)
    学习zabbix(八)
    学习zabbix(七)
    学习zabbix(六)
    数据结构之树形结构
    数据结构之线性结构
  • 原文地址:https://www.cnblogs.com/zhzhang/p/6268517.html
Copyright © 2011-2022 走看看