❶ yarn jar命令和hadoop jar命令有什麼區別
int year,month,day;
while(1)
{
printf("\n請選擇你所需要的服務:\n");
printf("\n輸入1求某個日期對應的星期");
printf("\n輸入2結束程序\n");
scanf("%d",&option);
switch(option)
❷ hadoop jar example-wordcount.jar wordcount input out 求這些參數的詳細說明
hadoop
是提示運行hadoop程序
jar
以jar包的方式運行
XXX.jar
jar包是哪一個
wordcount
jar包裡面的那個類
這里是wordcount類
input
輸入文件路徑目錄
output
輸出文件路徑目錄
❸ hadoop如何分發本地的jar文件
一般情況下,我們會使用下面的命令來運行一個hadoop任務: 這個命令實際上是轉化成下面的命令來運行的 在RunJar中,會讀取abc.jar文件,然後嘗試從manifest中提取Main-Class作為mainClass,如果manifest中沒有指定,則把abc.jar之後的下一個參數當成mainClass。 接下來,RunJar會在本地創建一個臨時目錄(下面稱為workDir,類似/tmp/hadoop-unjar...),然後把abc.jar解壓到這個目錄中。然後,把wrokDir、workDir/classes和workDir/lib下的所有文件路徑 添加到一個變數中,然後使用URLClassLoader將這個變數指定的所有路徑載入到當前線程。 最後,使用反射調用mainClass的main函數,進入用戶自己的代碼。 當我們的代碼調用job.waitForCompletion時,會調用JobClient.AndConfigureFiles,把本地的jar文件拷貝到HDFS上面/tmp/hadoop/mapred/staging/<jobid/job.jar/的目錄下。 TaskTracker獲取到一個Task之後,會啟動一個線程TaskLauncher來處理這個Task。在啟動這個Task之前,會調用taskController.initializeJob來初始化Job,把Job相關的內容從HDFS上拷貝到本地(JobLocalizer.localizeJobJarFile負責拷貝jar並解壓到本地workDir中)。 後面TaskRunner.getClassPaths把 wrokDir、workDir/classes和workDir/lib下的所有文件路徑 添加到一個變數中,然後使用這個變數構造啟動JVM的參數,最後啟動一個新的JVM來運行Job。 從這個流程可以看出,我們jar中的 根目錄,classes目錄,和lib下的所有文件 都被添加到了執行環境(另外還有系統自身的環境變數CLASSPATH和Hadoop自身依賴的庫)中。 因此,如果我們想要在我們的hadoop中添加一個外部的庫,可以有兩種方法: 1.把外部的jar解壓了,然後將所有的.class與我們自己的代碼打包在一起(maven-shade-plugin可以很輕松地幫我們做這件事); 2.創建一個lib目錄,把依賴的jar文件放在裡面,然後把lib目錄和我們的代碼打包在一起。 最後,提一下-libjars參數。如果我們使用ToolRunner.run來啟動我們的Job,那麼可以使用-libjars來指定依賴的外部jar。 不過-libjars有一定的局限性,由於-libjars來指定依賴的外部jar是在ToolRunner.run中使用GenericOptionsParser來載入的,因此在調用ToolRunner.run之前,外部jar還沒有載入,不能使用這些類,甚至import(直接或間接)也不行(JVM載入一個類時會先檢查這個類所引用的其他類型是否都可以找得到)。如果搞不清楚外部jar在何時可以用,不建議使用-libjars。 當然在Map和Rece階段時,-libjars來指定依賴的外部jar就完全可以無限制地使用了。Hadoop會自動把-libjars來指定依賴的外部jar上傳到HDFS上,每個Job在執行之前,這些jar會自動被拷貝到本地,並設置到classpath中。
❹ hadoop/hama中的jar包調用命令的正確格式是什麼樣的
#bin/hadoop jar xxx.jar main函數所在的class -參數
❺ 如何運行jar包中的hadoop程序
首先我們要打包程序,,打包完畢,我們該如何運行
首先顯示一個比較簡單的:
上面命令:hadoop jar x.jar 是運行包的一種方式,完成的方式為
hadoop jar x.jar ×××.MainClassName inputPath outputPath
同時解釋一下:
x.jar為包的名稱,包括路徑,直接寫包名稱,則為默認路徑
×××.MainClassName為運行的類名稱
inputPath為輸入路徑
outputPath為輸出路徑。
❻ hadoop MapRece 讀取配置參數
如果第三方配置文件不是特別大(幾百M以上),則可以使用DistributeCache。
如果第三方配置文件比較大,則需要在MapRece中實現join來做。
關於 DistributeCache的用法,請搜索「maprece DistributeCache」。
關於在MapRece中實現兩個文件的join,請搜索"maprece實現join"。
我只能說到這了。
❼ Hadoop集群運行JNI程序
要在Hadoop集群運行上運行JNI程序,首先要在單機上調試程序直到可以正確運行JNI程序,之後移植到Hadoop集群就是水到渠成的事情。
Hadoop運行程序的方式是通過jar包,所以我們需要將所有的class文件打包成jar包。在打包的過程中,無需將動態鏈接庫包含進去。
在集群中運行程序之前,Hadoop會首先將jar包傳遞到所有的節點,然後啟動運行。我們可以在這個階段將動態鏈接庫作為附件和jar包同時傳遞到所有的節點。方法就是給jar命令指定-files參數。命令如下:
hadoop
jarSegment.jar
Segment
-files
./bin/lib***.so
input
output
通過該命令,jar包和動態鏈接庫都會傳遞到所有節點,然後啟動maprece任務。
❽ bin/hadoop jar hadoop-*_examples.jar grep input output 『dfs[a-z.]+』 什麼意思啊
bin/hadoop jar(使用hadoop運行jar包) hadoop-*_examples.jar(jar包的名字) grep (要使用的類,後邊的是參數)input output 『dfs[a-z.]+』
整個就是運行hadoop示常式序中的grep,對應的hdfs上的輸入目錄為input、輸出目錄為output。
❾ hadoop 怎麼分布式運行jar
Hadoop完全分布式配置
環境:CentOs5、hadoop0.20.203、jdk1.6.0_29
namenode:centos1(ip:192.168.1.101)
datanode:centos2(ip:192.168.1.103)、centos3(ip:192.168.1.104)
配置步驟:
(1)配置NameNode和DataNode
修改每台機器的/etc/hosts(包括namenode和datanode)
127.0.0.1 localhost.localdomain localhost
192.168.1.101 centos1
192.168.1.103 centos2
192.168.1.104 centos3
::1 localhost6.localdomain6 localhost6
(2)在所有的機器上建立相同的用戶
useradd grid
passwd grid
成功建立grid用戶後,輸入用戶密碼就是該用戶密碼
(3)SSH設置
使用grid用戶登錄
在所有機器/home/grid下
mkdir .ssh
在namenode上生成密鑰對
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
注意點:
不進行以下步驟SSH免密碼登錄設置會不成功
.ssh目錄要設成700 有執行許可權
authorized_keys要設成600 否則會出錯
還有ssh 登陸要加入用戶名的 比如
ssh root@localhost
這時從centos1向其他機器發起SSH連接,只有第一次登錄時需要輸入密碼,以後則不需要
(4)在所有機器上安裝JDK
下載jdk-6u29-linux-i586.bin,安裝到/usr/java下,cd到usr/java下
chmod u+x jdk-6u29-linux-i586.bin
./jdk-6u29-linux-i586.bin
接下來要設置java的環境變數輸入命令:
gedit /etc/profile
在文件的最後添加以下語句:
JAVA_HOME=/usr/java/jdk1.6.0_29
export JRE_HOME=/usr/java/jdk1.6.0_29/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存退出,然後執行source /etc/profile即可。
輸入java -version 命令,出現如下信息就表示配置成功
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)
(5)在所有機器上安裝配置Hadoop
首先在namenode上配置,配置後在分發到datanode上
在這里,下載hadoop-0.20.203.tar.gz,然後解壓到/home/grid/下即可
tar -zxvf hadoop-0.20.203.tar.gz
接下來需要修改hadoop的conf文件夾下的配置信息:
修改hadoop-env.sh,加入如下語句,使得hadoop能夠找到java的路徑。:
export JAVA_HOME=/usr/java/jdk1.6.0_29
修改core-site.xml,如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://centos1:9000</value>
</property><property>
<name>hadoop.tmp.dir</name>
<value>/home/grid/tmp</value>
</property>
</configuration>
注意:hadoop.tmp.dir是hadoop文件系統依賴的基礎配置,很多路徑都依賴它。它默認的位置是在/tmp/{$user}下面,在local和hdfs都會建有相同的目錄,但是在/tmp路徑下的存儲是不安全的,因為linux一次重啟,文件就可能被刪除。導致namenode啟動不起來。
修改hdfs-site.xml,如下
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
修改mapred-site.xml,如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.1.101:9001</value>
</property>
</configuration>
保險起見這里寫centos1對應的IP地址
masters里寫入作為namenode節點機器的IP
192.168.1.101
slaves里寫入作為datanode節點的機器的IP
192.168.1.103
192.168.1.104
注意點:
修改hadoop-0.20.203.0/bin下的hadoop.
vi hadoop
查找 –jvm . vi 下的命令模式: :/-jvm
將-jvm server改成 –server .
因為JDK1.6已經廢除了一個參數-jvm,如果不修改的話,無法啟動數據節點。
到此,hadoop的有關配置已經完成,namenode端通過如下命令把配置好的hadoop發送到各個datanode處:
scp -r hadoop-0.20.2 centos2:/home/grid
scp -r hadoop-0.20.2 centos3:/home/grid