Tag: hadoop

扩展Hadoop的TableInputFormat以使用用于分发时间戳键的前缀进行扫描

我有一个hbase表,其密钥是一个带有一个字节随机前缀的时间戳,用于分发密钥,因此扫描不会热点。 我正在尝试扩展TableInputFormat以便我可以在带有范围的表上运行单个MapReduce,为所有256个可能的前缀添加前缀,以便扫描具有指定时间戳范围的所有范围。 我的解决方案不起作用,因为它总是似乎扫描最后一个前缀(127)256次。 必须在所有扫描中共享某些内容。 我的代码如下。 有任何想法吗? public class PrefixedTableInputFormat extends TableInputFormat { @Override public List getSplits(JobContext context) throws IOException { List splits = new ArrayList(); Scan scan = getScan(); byte startRow[] = scan.getStartRow(), stopRow[] = scan.getStopRow(); byte prefixedStartRow[] = new byte[startRow.length+1]; byte prefixedStopRow[] = new byte[stopRow.length+1]; System.arraycopy(startRow, 0, prefixedStartRow, 1, startRow.length); System.arraycopy(stopRow, 0, prefixedStopRow, 1, […]

在没有SPnego的情况下访问kerberos可以保护WebHDFS

我有一个使用WebHDFS管理HDFS的工作应用程序。 我需要能够在Kerberos安全集群上执行此操作。 问题是,没有库或扩展来协商我的应用程序的票证,我只有一个基本的HTTP客户端。 是否可以创建一个可以处理票证交换的Java服务,并且一旦获得服务票证就可以将其传递给应用程序以便在HTTP请求中使用? 换句话说,我的应用程序会要求Java服务协商票证,它会将服务票证以字符串或原始字符串forms返回给我的应用程序,应用程序只会将其附加到HTTP请求中吗? 编辑:是否有类似优雅的解决方案,如@SamsonScharfrichter描述的HTTPfs? (据我所知,它不支持委托令牌) EDIT2:大家好,我还是完全迷失了。 我试图弄清楚Hadoop-auth客户端没有任何运气。 你能再帮我一次吗? 我已经花了几个小时阅读它而没有运气。 这些例子说这样做: * // establishing an initial connection * * URL url = new URL(“http://foo:8080/bar”); * AuthenticatedURL.Token token = new AuthenticatedURL.Token(); * AuthenticatedURL aUrl = new AuthenticatedURL(); * HttpURLConnection conn = new AuthenticatedURL(url, token).openConnection(); * …. * // use the ‘conn’ instance * …. 我已经失去了。 […]

从windows eclipse运行Mapreduce(yarn)时出错

我正在从我的eclipse运行一个WordCount程序。 我试过Hadoop1.x它运行正常。 在hadoop2.x上运行时遇到问题 我试过1)将所有xml添加到我的类路径中。 2)也试过conf.set(),在conf对象中设置xml属性。 它还在日志中说:容器容器中没有可用的日志_1394042163908_0573_01_000001 Application application_1394042163908_0573 failed 2 times due to AM Container for appattempt_1394042163908_0573_000002 exited with exitCode: 1 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException: /bin/bash: line 0: fg: no job control at org.apache.hadoop.util.Shell.runCommand(Shell.java:464) at org.apache.hadoop.util.Shell.run(Shell.java:379) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589) at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerEx ecutor.java:195) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)`enter code here` […]

hadoop – map reduce任务和静态变量

我刚刚开始研究一些hadoop / hbase MapReduce作业(使用cloudera),我有以下问题: 比方说,我们有一个带有main和static viariable的java类。 该类定义了与Mapper和Reducer任务相对应的内部类。 在执行作业之前,主要初始化静态变量。 在Mapper类中读取此变量。 然后在集群上使用’hadoop jar’启动该类。 我的问题:我没有看到其他节点上的Map和Reduce任务如何看到该静态变量。 是否有任何“hadoop magic”允许节点共享jvm或静态变量? 这怎么可能工作? 我必须在这样做的一个类上工作,我无法弄清楚在非单一节点集群中这是怎么回事。 谢谢

OpenCV库加载了hadoop但没有工作

我正在尝试将OpenCV与Hadoop一起使用。 以下是我的代码。 我只是测试OpenCV库是否与Hadoop一起工作,即当我在Hadoop的函数public int run(String[] args)中运行OpenCV代码时。 我在互联网上搜索,并找到了一些如何在Hadoop中添加OpenCV本机库( libopencv_java310.so )的方法。 我尝试了一些方法,但它没有用。 例如本教程 。 它说将JAVA.LIBRARY.PATH添加到hadoop-config.sh文件中。 但它没有用。 我收到了这个错误 Exception in thread “main” java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path at line System.loadLibrary(Core.NATIVE.LIBRARY.NAME); 最后,我将OpenCV本机库( libopencv_java310.so )添加到此路径(从Internet获得解决方案) $HADOOP_HOME/lib/native 它似乎有效。 我没有得到上述错误。 但是我在下一行遇到了这个错误: Exception in thread “main” java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1(Ljava/lang/String;) 此错误符合以下条件: CascadeClassifier cad = new CascadeClassifier(); 据我所知,如果未加载OpenCV本机库,则会出现此错误。 但是现在加载了库,我不知道这个错误的原因是什么。 public int run(String[] args) throws Exception { […]

如何使用Java而不是XML使用hbase和Spring Boot?

我有Spring Boot Hadoop并希望利用Spring HbaseTemplate。 我的问题是文档只有关于配置和设置的“xml”方式的信息。 如何以及在何处将配置定义为java中的hbase配置,而不是官方文档中显示的xml? http://docs.spring.io/spring-hadoop/docs/1.0.1.RC1/reference/html/hbase.html

必需字段’client_protocol’未设置

我正在使用Hive 0.12,我正在尝试从apache中获取JDBC。 当我尝试运行代码时,我得到apache.thrift.TApplicationException。 import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveJdbcClient { private static String driverName = “org.apache.hive.jdbc.HiveDriver”; /** * @param args * @throws SQLException */ public static void main(String[] args) throws SQLException { try { Class.forName(driverName); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(1); } […]

使用hadoop和java命令执行map-reduce作业之间有什么区别

找到许多运行map-reduce程序的选项。 任何人都可以解释以下命令之间的差异。 如果有的话,会对Map减少工作产生什么影响。 java -jar MyMapReduce.jar [args] hadoop jar MyMapReduce.jar [args] yarn jar MyMapReduce.jar [args] 在这些命令中哪一个最好还是其他? 可以使用下面的命令使用Web服务8088(YARN)的端口在Web服务正常上使用Yarn和Job History(如显示Hadoop和yarn命令)显示有关作业的所有信息的配置吗? java -jar MyMapReduce.jar [args]

不断增加YARN中Spark应用程序的物理内存

我在YARN中运行Spark应用程序,有两个执行程序,Xms / Xmx为32 GB,spark.yarn.excutor.memoryOverhead为6 GB。 我看到应用程序的物理内存不断增加,最终被节点管理器杀死: 2015-07-25 15:07:05,354 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: Container [pid=10508,containerID=container_1437828324746_0002_01_000003] is running beyond physical memory limits. Current usage: 38.0 GB of 38 GB physical memory used; 39.5 GB of 152 GB virtual memory used. Killing container. Dump of the process-tree for container_1437828324746_0002_01_000003 : |- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) […]

如何在运行Hadoop MapReduce作业时将文件名/文件内容作为MAP的键/值输入?

我正在创建一个分析PDF,DOC和DOCX文件的程序。 这些文件存储在HDFS中。 当我启动MapReduce作业时,我希望map函数将Filename作为键,将Binary Contents作为值。 然后我想创建一个流阅读器,我可以将其传递给PDF解析器库。 如何实现Map Phase的键/值对是filename / filecontents? 我正在使用Hadoop 0.20.2 这是启动作业的旧代码: public static void main(String[] args) throws Exception { JobConf conf = new JobConf(PdfReader.class); conf.setJobName(“pdfreader”); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); } 我知道还有其他inputformat类型。 但有没有一个完全符合我的要求? 我发现文档很模糊。 如果有一个可用,那么Map函数输入类型应该如何? 提前致谢!