几个简单的例子

Disk_Throughput_Test.sh

Hadoop_copyFromLocal_Test.sh

#!/bin/bash
IOtest="/data1/testdata/IOtest"
host="/data1/perf_share/$(hostname)_$(date -d "today"+"%Y%m%d_%H%M%S")_$i"
#删除表格
rm -f /data1/perf_share/*.xls
#删除.dat文件
rm -f /data1/perf_share/*.dat
#执行三次循环以取得平均值
for((i=1;i<=3;i++))
do
#删除临时文件
rm -f $IOtest
cd /data1/testtools/
#创建一个16G的数据并把吞吐量写入.dat中
./iozone -s 16g -r 16k -i 0 -i 1 -f $IOtest -Rb $host.xls > $host.dat
#./iozone -s 3m -r 16k -i 0 -i 1 -f $IOtest -Rb $host.xls > $host.dat
done
dir="/data1/perf_share/"
#删除记录文件
rm -f $dir$(hostname).txt
#进入/data1/perf_share/目录
cd $dir
#让filelist表示显示目录文件
filelist=`ls $dir`
#写入数据量赋值为零
iothroughput_write=0
#读取数据量赋值为零
iothroughput_read=0
#循环处理文件
for filename in $filelist
do
        #只处理文件后缀名为dat或DAT的文件
        if [ "${filename##*.}" == "dat" ]||[ "${filename##*.}" == "DAT" ]; then
#               file=${filename%.*}
                echo "$filename has been done"
                #累加写入数据量
                let "iothroughput_write+=`sed -n '35p' $filename|cut -c11-|awk '{gsub(/ /,"")}1'`"
                #累加读取数据量
                let "iothroughput_read+=`sed -n '43p' $filename|cut -c11-|awk '{gsub(/ /,"")}1'`"
                echo $iothroughput
        fi
done
#计算平均值
let "iothroughput_write/=3072"
let "iothroughput_read/=3072"
#写入文件记录
echo $(hostname)":顺序 Writer is in MB/sec:"$iothroughput_write>>/data1/perf_share/$(hostname).txt
echo $(hostname)":顺序 Read is in MB/sec:"$iothroughput_read>>/data1/perf_share/$(hostname).txt
#上传到104
scp /data1/perf_share/$(hostname).txt qunzhihe@192.168.5.104:/data1/perf_share/

 

#!/usr/bin/env bash
#--------变量---------
#测试用例名称
DISK_IO_LOG_TEST_NAME="hadoop_copyFromLocal_TEST"
#测试结果描述
DISK_IO_RESULT="未定义"
#处理过程内容
DISK_IO_LOG_TEST_PROC_CONTENT=""
#测试用例开始时间
DISK_IO_BEGIN_DATE=""
#测试用例结束时间
DISK_IO_END_DATE=""

#import child shell
. ./writelog.sh

get_time()
{
  local yourdate=$*`date   +%Y-%m-%d_%H:%M:%S`
  echo $yourdate
}

run_hadoop_copyFromLocal_test()
{
DISK_IO_BEGIN_DATE="$(get_time)"
h=0
m=0
net_io=0
report="/data1/perf_share?HDFS_CopyFromLocal_Test.report"
> $report
for a in `cat /data1/iptest`
do
#       ssh $a 'rm -f /data1/testdata/50G.dat'
        input="/data2/20G.dat"
        output="/IOService/20.$a.dat"
        log="/data1/perf_share/HDFS_CopyFromLocal_time_$a.log"
        ssh $a /usr/bin/time -o $log hadoop fs -copyFromLocal $input $output
        scp qunzhihe@$a:$log /data1/perf_share/
        cd /data1/perf_share/
        h=`sed -n '1p' $log |awk '{print $3}'|sed 's/elapsed//g'|sed 's/:/ /g'|awk '{print $1}'`
        m=`sed -n '1p' $log |awk '{print $3}'|sed 's/elapsed//g'|sed 's/:/ /g'|awk '{print $2}'`
#       echo $h
#       echo $m
#       echo 'scale=2;(20*1024)/($(h)*60+$(m))'|bc
        net_io=`echo "$h $m" | awk '{printf("%0.2f\n",(20*1024)/($1*60+$2))}'`
        echo $net_io
        echo $a"上执行copyFromLocal,集群的吞吐量是 in MB/sec:"$net_io >> $report
        ssh $a hadoop fs -rm /IOService/20.$a.dat
done
DISK_IO_END_DATE="$(get_time)"
cd /data1/perf_share
DISK_IO_LOG_TEST_PROC_CONTENT=`cat HDFS_CopyFromLocal_Test.report`
addRunProcLog "${DISK_IO_LOG_TEST_NAME}" "${DISK_IO_RESULT}" "${DISK_IO_BEGIN_DATE}" "${DISK_IO_END_DATE}" "${DISK_IO_LOG_TEST_PROC_CONTENT}"
cd -
}

 

Hadoop_copyToLocal_Test.sh

#!/usr/bin/env bash
#--------变量---------
#测试用例名称
DISK_IO_LOG_TEST_NAME="hadoop_copyToLocal_TEST"
#测试结果描述
DISK_IO_RESULT="未定义"
#处理过程内容
DISK_IO_LOG_TEST_PROC_CONTENT=""
#测试用例开始时间
DISK_IO_BEGIN_DATE=""
#测试用例结束时间
DISK_IO_END_DATE=""

#import child shell
. ./writelog.sh
#获取本地时间函数声明
get_time()
{
#读取本地时间
  local yourdate=$*`date   +%Y-%m-%d_%H:%M:%S`
#显示当前时间
 echo $yourdate
}
#hadoop效率测试函数声明
run_hadoop_copyToLocal_test()
{
#读取当前系统时间并设为测试用例开始时间
DISK_IO_BEGIN_DATE="$(get_time)"
h=0
m=0
net_io=0
report="/data1/perf_share/HDFS_CopyToLocal_Test.report"
#清空Test.report文件内容
> $report
#循环读取ip地址
for a in `cat /data1/iptest`
do
//   
#无密登录$a并删除/data2/20G.dat
        ssh $a 'rm -f /data2/20G.dat'
        input="/IOService/20G.dat"
        output="/data2"
        log="/data1/perf_share/HDFS_CopyToLocal_time_$a.log"
无密登录$a后把测试数据从集群下载到$a并记录时间到log
        ssh $a /usr/bin/time -o $log hadoop fs -copyToLocal $input $output
#复制$a上的.log文件到本地
        scp qunzhihe@$a:$log /data1/perf_share/
#进入.log所在文件夹
        cd /data1/perf_share/
        h=`sed -n '1p' $log |awk '{print $3}'|sed 's/elapsed//g'|sed 's/:/ /g'|awk '{print $1}'`
        m=`sed -n '1p' $log |awk '{print $3}'|sed 's/elapsed//g'|sed 's/:/ /g'|awk '{print $2}'`
#       echo $h
#       echo $m
#       echo 'scale=2;(20*1024)/($(h)*60+$(m))'|bc
#算出吞吐速度并赋值
        net_io=`echo "$h $m" | awk '{printf("%0.2f\n",(20*1024)/($1*60+$2))}'`
#显示速度
        echo $net_io
把$a与集群间数据吞吐速度追加到本地的Test.report中
        echo $a"上执行copyToLocal,集群的吞吐量是 in MB/sec:"$net_io >> $report
done
DISK_IO_END_DATE="$(get_time)"
cd /data1/perf_share
DISK_IO_LOG_TEST_PROC_CONTENT=`cat HDFS_CopyToLocal_Test.report`
addRunProcLog "${DISK_IO_LOG_TEST_NAME}" "${DISK_IO_RESULT}" "${DISK_IO_BEGIN_DATE}" "${DISK_IO_END_DATE}" "${DISK_IO_LOG_TEST_PROC_CONTENT}"
cd -
}

posted @ 2011-09-14 20:15  luwikes  阅读(300)  评论(0编辑  收藏  举报