❶ 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