Tag: hadoop

如果我有一个构造函数需要一个文件的路径,如果它被打包到一个jar子里怎么能“假”?

这个问题的上下文是我试图在我编写的猪脚本中使用maxmind java api …但是,我不认为知道任何一个是必要的回答这个问题。 maxmind API有一个构造函数,它需要一个名为GeoIP.dat的文件的路径,这是一个逗号分隔的文件,它具有所需的信息。 我有一个包含API的jar文件,以及一个实例化类并使用它的包装类。 我的想法是将GeoIP.dat文件打包到jar中,然后将其作为jar文件中的资源进行访问。 问题是我不知道如何构造构造函数可以使用的路径。 查看API,这是他们加载文件的方式: public LookupService(String databaseFile) throws IOException { this(new File(databaseFile)); } public LookupService(File databaseFile) throws IOException { this.databaseFile = databaseFile; this.file = new RandomAccessFile(databaseFile, “r”); init(); } 我只是粘贴它,因为我不反对编辑API本身以使其工作,如果有必要,但不知道如何复制我的function。 理想情况下,我希望将其纳入文件格式,否则编辑API将是一件非常繁琐的事。 这可能吗?

在Hadoop伪分布式模式下充分利用所有核心

我正在我的4核笔记本电脑上以伪分布式模式运行任务。 如何确保有效使用所有核心。 目前我的工作跟踪器显示一次只执行一项工作。 这是否意味着只使用一个核心? 以下是我的配置文件。 CONF /芯-site.xml中: fs.default.name hdfs://localhost:9000 CONF / HDFS-site.xml中: dfs.replication 1 CONF / mapred-site.xml中: mapred.job.tracker localhost:9001 编辑:根据答案,我需要在mapred-site.xml中添加以下属性 mapred.map.tasks 4 mapred.reduce.tasks 4

“hadoop namenode -format”返回java.net.UnknownHostException

我正在学习hadoop,我正在尝试设置http://hadoop.apache.org/common/docs/current/single_node_setup.html中定义的单节点测试 我已经配置了ssh(我可以在没有密码的情况下登录)。 我的服务器在我们的内部网上,在代理后面。 当我想跑的时候 bin / hadoop namenode -format 我得到以下java.net.UnknownHostExceptionexception: $ bin/hadoop namenode -format 11/06/10 15:36:47 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = java.net.UnknownHostException: srv-clc-04.univ-nantes.prive3: srv-clc-04.univ-nantes.prive3 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 0.20.203.0 STARTUP_MSG: build = http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333; compiled by ‘oom’ on Wed May 4 07:57:50 PDT 2011 ************************************************************/ Re-format […]

hadoop方法将输出发送到多个目录

我的MapReduce作业按日期处理数据,需要将输出写入某个文件夹结构。 目前的期望是产生以下结构: 2013 01 02 .. 2012 01 02 .. 等等 在任何时候,我只获得长达12个月的数据,因此,我使用MultipleOutputs类在驱动程序中使用以下函数创建12个输出: public void createOutputs(){ Calendar c = Calendar.getInstance(); String monthStr, pathStr; // Create multiple outputs for last 12 months // TODO make 12 configurable for(int i = 0; i 10 ? “” + month : “0” + month ; // Generate path string in […]

纱线容器的理解和调整

嗨,我们最近从mr1升级到纱线。 我知道容器是一个抽象的概念,但我不明白一个容器可以产生多少jvm任务(map,reduce,filter等)或者其他方式要求是多个容器可以重复使用多个映射或减少任务。 我在下面的博客中读到: YARN中的容器是什么? “each mapper and reducer runs on its own container to be accurate!” 这意味着如果我查看AM日志,我应该看到分配的容器数量等于map任务的数量(失败|成功)加上reduce任务的数量是正确的吗? 我知道应用程序生命周期中容器的数量会根据AM请求,拆分,调度程序等而发生变化。 但有没有办法请求给定应用程序的最小容器的初始数量。 我认为一种方法是配置公平调度程序队列。 但还有什么能够决定这个吗? 在MR的情况下,如果我有mapreduce.map.memory.mb = 3gb和mapreduce.map.cpu.vcores=4 。 我也有yarn.scheduler.minimum-allocation-mb = 1024m和yarn.scheduler.minimum-allocation-vcores = 1 。 这是否意味着我将获得一个带有4个核心的容器或带有一个核心的4个容器? 还不清楚在哪里可以指定mapreduce.map.memory.mb和mapreduce.map.cpu.vcores 。 它们应该设置在客户机节点中还是可以按应用程序设置? 同样来自RM UI或AM UI有没有办法查看当前为给定应用程序分配的容器?

为什么将Mapper和Reducer类声明为静态?

这可能表明我缺乏Java理解,但我想知道为什么在大多数MapReduce程序中mapper和reducer类被声明为静态?

尝试格式化namenode时无法找到或加载主类; 在MAC OS X 10.9.2上安装hadoop

我正在尝试使用hadoop在我的MAC OS X 10.9.2上完成开发单节点集群设置。 我尝试了各种在线教程,最近就是这个 。 总结一下我的所作所为: 1) $ brew install hadoop 这在/usr/local/Cellar/hadoop/2.2.0中安装了hadoop 2.2.0 2)配置的环境变量。 这是我的.bash_profile的相关部分: ### Java_HOME export JAVA_HOME=”$(/usr/libexec/java_home)” ### HADOOP Environment variables export HADOOP_PREFIX=”/usr/local/Cellar/hadoop/2.2.0″ export HADOOP_HOME=$HADOOP_PREFIX export HADOOP_COMMON_HOME=$HADOOP_PREFIX export HADOOP_CONF_DIR=$HADOOP_PREFIX/libexec/etc/hadoop export HADOOP_HDFS_HOME=$HADOOP_PREFIX export HADOOP_MAPRED_HOME=$HADOOP_PREFIX export HADOOP_YARN_HOME=$HADOOP_PREFIX export CLASSPATH=$CLASSPATH:. export CLASSPATH=$CLASSPATH:$HADOOP_HOME/libexec/share/hadoop/common/hadoop-common-2.2.0.jar export CLASSPATH=$CLASSPATH:$HADOOP_HOME/libexec/share/hadoop/hdfs/hadoop-hdfs-2.2.0.jar 3)配置HDFS dfs.datanode.data.dir file:///usr/local/Cellar/hadoop/2.2.0/hdfs/datanode Comma separated list of paths on the local […]

用Java读取HDFS和本地文件

我想读取文件路径,无论它们是HDFS还是本地路径。 目前,我传递带有前缀file://的本地路径和带有前缀hdfs://的HDFS路径,并编写一些代码如下 Configuration configuration = new Configuration(); FileSystem fileSystem = null; if (filePath.startsWith(“hdfs://”)) { fileSystem = FileSystem.get(configuration); } else if (filePath.startsWith(“file://”)) { fileSystem = FileSystem.getLocal(configuration).getRawFileSystem(); } 从这里我使用FileSystem的API来读取文件。 如果还有其他比这更好的方法,你能告诉我吗?

Hbase客户端无法与远程Hbase服务器连接

我为远程服务器编写了以下hbase客户端类: System.out.println(“Hbase Demo Application “); // CONFIGURATION // ENSURE RUNNING try { HBaseConfiguration config = new HBaseConfiguration(); config.clear(); config.set(“hbase.zookeeper.quorum”, “192.168.15.20”); config.set(“hbase.zookeeper.property.clientPort”,”2181″); config.set(“hbase.master”, “192.168.15.20:60000”); //HBaseConfiguration config = HBaseConfiguration.create(); //config.set(“hbase.zookeeper.quorum”, “localhost”); // Here we are running zookeeper locally HBaseAdmin.checkHBaseAvailable(config); System.out.println(“HBase is running!”); // createTable(config); //creating a new table HTable table = new HTable(config, “mytable”); System.out.println(“Table mytable obtained […]

Json使用Java反对Parquet格式而不转换为AVRO(不使用Spark,Hive,Pig,Impala)

我有一个场景,使用Java将存在为Json对象的消息转换为Apache Parquet格式。 任何示例代码或示例都会有所帮助。 至于我发现将消息转换为Parquet的信息,正在使用Hive,Pig,Spark。 我需要转换为Parquet,而不仅仅涉及Java。