hdfs 로그 업로드 스 크 립 트 (3)
다음 단 계 는 flume 등 로그 수집 시스템 을 테스트 하여 hdfs 에 로 그 를 더 편리 하고 실시 간 으로 업로드 할 수 있 는 지 확인 하고 싶 습 니 다.
그러나 이 제 는 스 크 립 트 방식 으로 돌아 가 겠 습 니 다. 그러나 생각 을 바 꾸 었 습 니 다. 원본 로 그 는 windows 에서 lzo 형식 으로 직접 처리 한 다음 공유 디 렉 터 리 에 놓 습 니 다. 우리 Liux 서버 는 이 windows 공유 디 렉 터 리 를 마 운 트 한 다음 에 Hadoop 명령 으로 업로드 하면 로 컬 디스크 I/O 작업 이 줄 어 들 지 않 습 니까?
생각 이 중요 한 것 같 습 니 다.
이번 스 크 립 트 는 두 대의 Liux 서버 로 windows 공유 디 렉 터 리 를 마 운 트 합 니 다. 두 대의 Liux 서버 에서 모두 스 크 립 트 를 실행 합 니 다. 업로드 하기 전에 로그 파일 이 충돌 하 는 지 판단 하고 이름 을 바 꾸 는 방법 으로 독점 적 인 목적 을 달성 해 야 합 니 다.
- #!/bin/bash
- # 2012-03-02 by qinshan.li
- #
- export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
- windows="/hdfs/track_1469 /hdfs/track_1470 /hdfs/track_1722"
- TRACK=/log/source/iCast_iFocus_track
-
- for DIR in $windows
- do
- find $DIR -type f -name "*.lzo" |while read FILE
- do
- if [ -f "$FILE" ]; then
- if ! lsof |grep $FILE; then
- Original=$(echo $FILE |awk -F '/' '{print $4}')
- New=${L_N}_170
- mv $DIR/$Original $DIR/$New
- L_size=$(ls -l $DIR/$New |awk '{print $5}')
-
- if ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -copyFromLocal $DIR/$New $TRACK
- then
- H_size=$(~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -ls $TRACK/$New |awk '{print $5}')
- RAND=0
-
- while [ "$H_size" -ne "$L_size" ]; do
- RAND=$(($RAND+1))
- if [ $RAND -gt 5 ]; then
- echo -e "Have tried 5 times to upload $FILE !" |mail -s "track jiaxing upload failure" -c [email protected] [email protected] -- -f [email protected] -F bb
- break
- fi
-
- ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -rm $TRACK/$New
- ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -copyFromLocal $DIR/$New $TRACK
- done
- fi
-
- ~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -mv $TRACK/$New $TRACK/$Original
- rm -f $DIR/$New
- fi
- fi
- done
- done
계획 작업 을 할 때 스 크 립 트 를 써 서 위의 스 크 립 트 가 실행 되 고 있 는 지 판단 하 세 요. 그렇다면 잠시 만 기 다 려 보 세 요. 아니면 source 방식 으로 위의 스 크 립 트 를 호출 하 세 요.
-
#!/bin/bash
-
# 2012-03-02 by qinshan.li
-
#
-
if [ -z "$(/usr/bin/pgrep aa.sh)" ]
-
then
-
echo -e "$(/bin/date +%F_%H:%M) Now running aa.sh" >>/hdfs/bb.log
-
source /hdfs/aa.sh
-
else
-
echo -e "$(/bin/date +%F_%H:%M) The script aa.sh is running." >>/hdfs/bb.log
-
fi
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.