




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第Hadoop源碼分析三啟動及腳本剖析#somevariables
exportHADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.log
exportHADOOP_ROOT_LOGGER=${HADOOP_ROOT_LOGGER:-"INFO,RFA"}
exportHADOOP_SECURITY_LOGGER=${HADOOP_SECURITY_LOGGER:-"INFO,RFAS"}
exportHDFS_AUDIT_LOGGER=${HDFS_AUDIT_LOGGER:-"INFO,NullAppender"}
log=$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.out
pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid
HADOOP_STOP_TIMEOUT=${HADOOP_STOP_TIMEOUT:-5}
#Setdefaultschedulingpriority
if["$HADOOP_NICENESS"=""];then
exportHADOOP_NICENESS=0
case$startStopin
(start)
[-w"$HADOOP_PID_DIR"]||mkdir-p"$HADOOP_PID_DIR"
if[-f$pid];then
ifkill-0`cat$pid`/dev/null2then
echo$commandrunningasprocess`cat$pid`.Stopitfirst.
exit1
if["$HADOOP_MASTER"!=""];then
echorsyncfrom$HADOOP_MASTER
rsync-a-essh--delete--exclude=.svn--exclude='logs/*'--exclude='contrib/hod/logs/*'$HADOOP_MASTER/"$HADOOP_PREFIX"
hadoop_rotate_log$log
echostarting$command,loggingto$log
cd"$HADOOP_PREFIX"
case$commandin
namenode|secondarynamenode|datanode|journalnode|dfs|dfsadmin|fsck|balancer|zkfc)
if[-z"$HADOOP_HDFS_HOME"];then
hdfsScript="$HADOOP_PREFIX"/bin/hdfs
else
hdfsScript="$HADOOP_HDFS_HOME"/bin/hdfs
nohupnice-n$HADOOP_NICENESS$hdfsScript--config$HADOOP_CONF_DIR$command"$@""$log"21/dev/null
nohupnice-n$HADOOP_NICENESS$hadoopScript--config$HADOOP_CONF_DIR$command"$@""$log"21/dev/null
esac
echo$!$pid
sleep1
head"$log"
#capturetheulimitoutput
if["true"="$starting_secure_dn"];then
echo"ulimit-aforsecuredatanodeuser$HADOOP_SECURE_DN_USER"$log
#capturetheulimitinfofortheappropriateuser
su--shell=/bin/bash$HADOOP_SECURE_DN_USER-c'ulimit-a'$log21
elif["true"="$starting_privileged_nfs"];then
echo"ulimit-aforprivilegednfsuser$HADOOP_PRIVILEGED_NFS_USER"$log
su--shell=/bin/bash$HADOOP_PRIVILEGED_NFS_USER-c'ulimit-a'$log21
else
echo"ulimit-aforuser$USER"$log
ulimit-a$log21
sleep3;
if!ps-p$!/dev/null;then
exit1
(stop)
if[-f$pid];then
TARGET_PID=`cat$pid`
ifkill-0$TARGET_PID/dev/null2then
echostopping$command
kill$TARGET_PID
sleep$HADOOP_STOP_TIMEOUT
ifkill-0$TARGET_PID/dev/null2then
echo"$commanddidnotstopgracefullyafter$HADOOP_STOP_TIMEOUTseconds:killingwithkill-9"
kill-9$TARGET_PID
else
echono$commandtostop
rm-f$pid
else
echono$commandtostop
echo$usage
exit1
這段代碼的重點在第131行到結(jié)束。這里是真正在啟動服務(wù)的代碼,這個文件在調(diào)用的時候,會傳入兩個重要的參數(shù)start/stopxxx。用于啟動或停止某些服務(wù)。以啟動服務(wù)為例,其重點在第153行,這里會執(zhí)行一個hdfsScript腳本。這個參數(shù)的定義在第155行,
這里可以看見它實際是hadoop的bin目錄下的hdfs文件
文件的內(nèi)容如下:
#!/usr/bin/envbash
#LicensedtotheApacheSoftwareFoundation(ASF)underoneormore
#contributorlicenseagreements.SeetheNOTICEfiledistributedwith
#thisworkforadditionalinformationregardingcopyrightownership.
#TheASFlicensesthisfiletoYouundertheApacheLicense,Version2.0
#(the"License");youmaynotusethisfileexceptincompliancewith
#theLicense.YoumayobtainacopyoftheLicenseat
#/licenses/LICENSE-2.0
#Unlessrequiredbyapplicablelaworagreedtoinwriting,software
#distributedundertheLicenseisdistributedonan"ASIS"BASIS,
#WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
#SeetheLicenseforthespecificlanguagegoverningpermissionsand
#limitationsundertheLicense.
#EnvironmentVariables
#JSVC_HOMEhomedirectoryofjsvcbinary.Requiredforstartingsecure
#datanode.
#JSVC_OUTFILEpathtojsvcoutputfile.Defaultsto
#$HADOOP_LOG_DIR/jsvc.out.
#JSVC_ERRFILEpathtojsvcerrorfile.Defaultsto$HADOOP_LOG_DIR/jsvc.err.
bin=`which$0`
bin=`dirname${bin}`
bin=`cd"$bin"/dev/null;pwd`
DEFAULT_LIBEXEC_DIR="$bin"/../libexec
HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
.$HADOOP_LIBEXEC_DIR/hdfs-config.sh
functionprint_usage(){
echo"Usage:hdfs[--configconfdir][--loglevelloglevel]COMMAND"
echo"whereCOMMANDisoneof:"
echo"dfsrunafilesystemcommandonthefilesystemssupportedinHadoop."
echo"classpathprintstheclasspath"
echo"namenode-formatformattheDFSfilesystem"
echo"secondarynamenoderuntheDFSsecondarynamenode"
echo"namenoderuntheDFSnamenode"
echo"journalnoderuntheDFSjournalnode"
echo"zkfcruntheZKFailoverControllerdaemon"
echo"datanoderunaDFSdatanode"
echo"dfsadminrunaDFSadminclient"
echo"haadminrunaDFSHAadminclient"
echo"fsckrunaDFSfilesystemcheckingutility"
echo"balancerrunaclusterbalancingutility"
echo"jmxgetgetJMXexportedvaluesfromNameNodeorDataNode."
echo"moverrunautilitytomoveblockreplicasacross"
echo"storagetypes"
echo"oivapplytheofflinefsimageviewertoanfsimage"
echo"oiv_legacyapplytheofflinefsimageviewertoanlegacyfsimage"
echo"oevapplytheofflineeditsviewertoaneditsfile"
echo"fetchdtfetchadelegationtokenfromtheNameNode"
echo"getconfgetconfigvaluesfromconfiguration"
echo"groupsgetthegroupswhichusersbelongto"
echo"snapshotDiffdifftwosnapshotsofadirectoryordiffthe"
echo"currentdirectorycontentswithasnapshot"
echo"lsSnapshottableDirlistallsnapshottabledirsownedbythecurrentuser"
echo"Use-helptoseeoptions"
echo"portmaprunaportmapservice"
echo"nfs3runanNFSversion3gateway"
echo"cacheadminconfiguretheHDFScache"
echo"cryptoconfigureHDFSencryptionzones"
echo"storagepolicieslist/get/setblockstoragepolicies"
echo"versionprinttheversion"
echo""
echo"Mostcommandsprinthelpwheninvokedw/oparameters."
#Therearealsodebugcommands,buttheydon'tshowupinthislisting.
if[$#=0];then
print_usage
exit
COMMAND=$1
shift
case$COMMANDin
#usageflags
--help|-help|-h)
print_usage
exit
#Determineifwe'restartingasecuredatanode,andifso,redefineappropriatevariables
if["$COMMAND"=="datanode"]["$EUID"-eq0][-n"$HADOOP_SECURE_DN_USER"];then
if[-n"$JSVC_HOME"];then
if[-n"$HADOOP_SECURE_DN_PID_DIR"];then
HADOOP_PID_DIR=$HADOOP_SECURE_DN_PID_DIR
if[-n"$HADOOP_SECURE_DN_LOG_DIR"];then
HADOOP_LOG_DIR=$HADOOP_SECURE_DN_LOG_DIR
HADOOP_OPTS="$HADOOP_OPTS-Dhadoop.log.dir=$HADOOP_LOG_DIR"
HADOOP_IDENT_STRING=$HADOOP_SECURE_DN_USER
HADOOP_OPTS="$HADOOP_OPTS-Dhadoop.id.str=$HADOOP_IDENT_STRING"
starting_secure_dn="true"
else
echo"Itlookslikeyou'retryingtostartasecureDN,but\$JSVC_HOME"\
"isn'tset.FallingbacktostartinginsecureDN."
#Determineifwe'restartingaprivilegedNFSdaemon,andifso,redefineappropriatevariables
if["$COMMAND"=="nfs3"]["$EUID"-eq0][-n"$HADOOP_PRIVILEGED_NFS_USER"];then
if[-n"$JSVC_HOME"];then
if[-n"$HADOOP_PRIVILEGED_NFS_PID_DIR"];then
HADOOP_PID_DIR=$HADOOP_PRIVILEGED_NFS_PID_DIR
if[-n"$HADOOP_PRIVILEGED_NFS_LOG_DIR"];then
HADOOP_LOG_DIR=$HADOOP_PRIVILEGED_NFS_LOG_DIR
HADOOP_OPTS="$HADOOP_OPTS-Dhadoop.log.dir=$HADOOP_LOG_DIR"
HADOOP_IDENT_STRING=$HADOOP_PRIVILEGED_NFS_USER
HADOOP_OPTS="$HADOOP_OPTS-Dhadoop.id.str=$HADOOP_IDENT_STRING"
starting_privileged_nfs="true"
else
echo"Itlookslikeyou'retryingtostartaprivilegedNFSserver,but"\
"\$JSVC_HOMEisn'tset.FallingbacktostartingunprivilegedNFSserver."
if["$COMMAND"="namenode"];then
HADOOP_OPTS="$HADOOP_OPTS$HADOOP_NAMENODE_OPTS"
elif["$COMMAND"="zkfc"];then
HADOOP_OPTS="$HADOOP_OPTS$HADOOP_ZKFC_OPTS"
elif["$COMMAND"="secondarynamenode"];then
HADOOP_OPTS="$HADOOP_OPTS$HADOOP_SECONDARYNAMENODE_OPTS"
elif["$COMMAND"="datanode"];then
if["$starting_secure_dn"="true"];then
HADOOP_OPTS="$HADOOP_OPTS-jvmserver$HADOOP_DATANODE_OPTS"
else
HADOOP_OPTS="$HADOOP_OPTS-server$HADOOP_DATANODE_OPTS"
elif["$COMMAND"="journalnode"];then
HADOOP_OPTS="$HADOOP_OPTS$HADOOP_JOURNALNODE_OPTS"
elif["$COMMAND"="dfs"];then
"$HADOOP_OPTS$HADOOP_CLIENT_OPTS"
elif["$COMMAND"="dfsadmin"];then
"$HADOOP_OPTS$HADOOP_CLIENT_OPTS"
elif["$COMMAND"="haadmin"];then
"$HADOOP_OPTS$HADOOP_CLIENT_OPTS"
elif["$COMMAND"="fsck"];then
"$HADOOP_OPTS$HADOOP_CLIENT_OPTS"
elif["$COMMAND"="balancer"];then
"$HADOOP_OPTS$HADOOP_BALANCER_OPTS"
elif["$COMMAND"="mover"];then
"${HADOOP_OPTS}${HADOOP_MOVER_OPTS}"
elif["$COMMAND"="storagepolicies"];then
"$COMMAND"="jmxget"];then
"$COMMAND"="oiv"];then
"$COMMAND"="oiv_legacy"];then
"$COMMAND"="oev"];then
"$COMMAND"="fetchdt"];then
"$COMMAND"="getconf"];then
"$COMMAND"="groups"];then
"$COMMAND"="snapshotDiff"];then
"$COMMAND"="lsSnapshottableDir"];then
"$COMMAND"="portmap"];then
"$HADOOP_OPTS$HADOOP_PORTMAP_OPTS"
elif["$COMMAND"="nfs3"];then
"$HADOOP_OPTS$HADOOP_NFS3_OPTS"
elif["$COMMAND"="cacheadmin"];then
"$COMMAND"="crypto"];then
"$COMMAND"="version"];then
"$COMMAND"="debug"];then
"$COMMAND"="classpath"];then
if["$#"-gt0];then
"$CLASSPATH"2/dev/null)
echo$CLASSPATH
exit0
#cygwinpathtranslation
if$cygwin;then
CLASSPATH=$(cygpath-p-w"$CLASSPATH"2/dev/null)
HADOOP_LOG_DIR=$(cygpath-w"$HADOOP_LOG_DIR"2/dev/null)
HADOOP_PREFIX=$(cygpath-w"$HADOOP_PREFIX"2/dev/null)
HADOOP_CONF_DIR=$(cygpath-w"$HADOOP_CONF_DIR"2/dev/null)
HADOOP_COMMON_HOME=$(cygpath-w"$HADOOP_COMMON_HOME"2/dev/null)
HADOOP_HDFS_HOME=$(cygpath-w"$HADOOP_HDFS_HOME"2/dev/null)
HADOOP_YARN_HOME=$(cygpath-w"$HADOOP_YARN_HOME"2/dev/null)
HADOOP_MAPRED_HOME=$(cygpath-w"$HADOOP_MAPRED_HOME"2/dev/null)
exportCLASSPATH=$CLASSPATH
HADOOP_OPTS="$HADOOP_OPTS-Dhadoop.security.logger=${HADOOP_SECURITY_LOGGER:-INFO,NullAppender}"
#Checktoseeifweshouldstartasecuredatanode
if["$starting_secure_dn"="true"];then
if["$HADOOP_PID_DIR"=""];then
HADOOP_SECURE_DN_PID="/tmp/hadoop_secure_dn.pid"
else
HADOOP_SECURE_DN_PID="$HADOOP_PID_DIR/hadoop_secure_dn.pid"
JSVC=$JSVC_HOME/jsvc
if[!-f$JSVC];then
echo"JSVC_HOMEisnotsetcorrectlysojsvccannotbefound.jsvcisrequiredtorunsecuredatanodes."
echo"Pleasedownloadandinstalljsvcfrom/dist/commons/daemon/binaries/"\
"andsetJSVC_HOMEtothedirectorycontainingthejsvcbinary."
exit
if[[!$JSVC_OUTFILE]];then
JSVC_OUTFILE="$HADOOP_LOG_DIR/jsvc.out"
if[[!$JSVC_ERRFILE]];then
JSVC_ERRFILE="$HADOOP_LOG_DIR/jsvc.err"
exec"$JSVC"\
-Dproc_$COMMAND-outfile"$JSVC_OUTFILE"\
-errfile"$JSVC_ERRFILE"\
-pidfile"$HADOOP_SECURE_DN_PID"\
-nodetach\
-user"$HADOOP_SECURE_DN_USER"\
-cp"$CLASSPATH"\
$JAVA_HEAP_MAX$HADOOP_OPTS\
org.apache.hadoop.hdfs.server.datanode.SecureDataNodeStarter"$@"
elif["$starting_privileged_nfs"="true"];then
if["$HADOOP_PID_DIR"=""];then
HADOOP_PRIVILEGED_NFS_PID="/tmp/hadoop_privileged_nfs3.pid"
else
HADOOP_PRIVILEGED_NFS_PID="$HADOOP_PID_DIR/h
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療設(shè)備供應(yīng)鏈的可持續(xù)性發(fā)展路徑
- 學(xué)校中年級數(shù)學(xué)教研組工作總結(jié)模版
- 信用社年終主任工作總結(jié)模版
- 醫(yī)療數(shù)據(jù)隱私保護的法律法規(guī)解析
- 醫(yī)療領(lǐng)域中區(qū)塊鏈技術(shù)重塑信任與安全
- 兒童醫(yī)療安全與防護的利器-兒童用醫(yī)療器械的臨床前研究報告
- 高脂血癥的臨床護理
- 買賣合同范例范文
- 新質(zhì)生產(chǎn)力稅務(wù)簡報
- 預(yù)防電信詐騙心得體會模版
- 2023版國開電大本科《高級財務(wù)會計》在線形考(任務(wù)一至四)試題及答案
- 中醫(yī)外科學(xué)其他外科疾病課件
- 鋼筋工程量計算圖解講義
- 直播傭金直播合同帶貨
- 汽車主減速器及差速器的結(jié)構(gòu)設(shè)計與強度分析畢業(yè)設(shè)計
- 初中英語譯林版單詞表全冊詞匯表打印背誦版(全6冊)
- 2023年雅安市人力資源和社會保障局招考聘用編外工作人員模擬預(yù)測(共1000題)筆試備考題庫及答案解析
- 沖擊成孔灌注樁施工工藝和常見問題的處理方法
- 臺灣大學(xué)歐麗娟老師的中國文學(xué)史講義
- R老年人老年人如何保持適宜體重
- 監(jiān)控設(shè)備安裝技術(shù)交底
評論
0/150
提交評論