SPARK APP壓測--清理檢查相關SHELL(1)
壓力測試前需要對大資料環境、日誌和儲存資料庫進行清理、檢查環境是否可用、儲存測試前的環境狀態。
壓力測試過程中需要定期檢查PARQUET檔案生成情況、報表生成情況、HBASE資料生成情況、是否有SPARK APP FAILED、收集錯誤日誌等。
壓力測試後需要檢查PARQUET檔案生成情況、報表生成情況、HBASE資料生成情況、是否有SPARK APP FAILED、收集錯誤日誌、檢視APP執行時間間隔、各主機CPU記憶體網路磁碟狀況等。
基礎指令碼,eea_2_all.sh,分發命令到HDP叢集各節點主機執行,內容如下,注意基礎指令碼運行於HDP第一臺主機(與其他主機做免密處理)。
#!/bin/bash#陣列中用主機名亦可
HOSTS=(192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.8 192.168.1.9 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13)
COMMAND=$1
PROMPT=$2
if [ $# == 0 ] ; then
COMMAND="/bin/rm -rf /var/log/rmslog/*;/bin/echo '' > /var/log/rmslog/debug.log;/bin/chmod 666 /var/log/rmslog/debug.log"
fi
count=1
for host in ${HOSTS[@]}
do
echo "-----------------------eea-younge-${count}.test--$host: ${PROMPT}----------------------"
ssh $host ${COMMAND}
let count++
done
1.測試前的準備工作包括,
a.確保Hmaster上面的Hbase Thrift Server處於執行狀態,命令如下。
. ssh 192.168.1.6 "if test $(ps -ef | grep 'hbase.thrift.ThriftServer start' | wc -l
b.對大資料環境、本地日誌和儲存資料庫進行清理,檢查YARN中應用情況。
#清理Hbase表
#其中cmd.hbase存放的是按行儲存的hbase shell命令,最後一行需為exit,用於退出hbase shell。
nohup hbase shell hbase/cmds.hbase > result/clear_hbase_${now}.log#清理Hdfs Parquet檔案,shell/clear_parquets.sh
#清理各主機的本地日誌
. ${shell_path}/eea_2_all.sh
#清理Redis資料庫,其中cmds.redis中存放的為按行儲存命令,本篇中僅一條命令flushall
nohup /bin/cat redis/cmds.redis | redis-cli -h 192.168.1.5 -a runoob > result/clear_redis_${now}.log#清理PostgreSQL工作日誌表
export PGPASSWORD=pass123456nohup psql -h 192.168.1.155 -p 5432 -U test -d test -f sql/query_truncate_app_orchestration.sql > result/test_clear_work_log_${now}.log#query_truncate_work_log.sql 內容如下,
select * from app_orchestration;truncate app_orchestration;#檢查磁碟掛載情況
nohup shell/eea_2_all.sh "mount | grep \"data/eea\"" "Mount Directory /data/eea Check" > result/mount_check_${now}.txt#檢查各主機磁碟空間情況
nohup shell/eea_2_all.sh "df -hT" "Disk Usage" 2>&1 > result/"vms_disk_usage_${now}.txt"#檢查資料庫空間情況
psql -h 192.168.1.155 -p 5432 -U test -d test -f sql/check_databases_size.sql > result/rms_eea_databases_size_${now}.txt#check_databases_size.sql 內容如下,
SELECT d.datname ASName, pg_catalog.pg_get_userbyid(d.datdba) AS Owner, CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname)) ELSE 'No Access' ENDASSIZE FROM pg_catalog.pg_database d WHERE d.datname in ('test') ORDERBY CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') THEN pg_catalog.pg_database_size(d.datname) ELSE NULL ENDDESC -- nulls first LIMIT 20 ;#檢查資料庫表空間情況
psql -h 192.168.1.155 -p 5432 -U test -d test -f sql/check_tables_size.sql > result/rms_eea_tables_size_${now}.txt
#check_tables_size.sql內容如下,
SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) ASsizeFROM information_schema.tables WHERE table_schema='public'ORDERBY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;#檢查YARN中失敗的應用列表
nohup yarn application -list -appStates FAILED > result/yarn_app_failed_list.log
#檢查YARN中KILLED的應用列表
nohup yarn application -list -appStates KILLED > result/yarn_app_killed_list.log
壓測過程中檢查見後續文章。。。