在远程执行的命令中如果包含特殊字符($)时需要转义,如下:

1
ssh root@remote_host "ps -ef|grep process_name | grep -v 'grep ' | awk '{print $2}'"

以上语句的本意是得到进程的ID,但实际输出会是进程的信息。应该使用如下形式:

阅读全文 »

今天在运行MR程序时遇到以下信息:

1
17/03/03 10:09:45 INFO mapreduce.Job: Job job_1488363995041_0002 failed with state KILLED due to: REDUCE capability required is more than the supported max container capability in the cluster. Killing the Job. reduceResourceRequest: <memory:4096, vCores:1> maxContainerCapability:<memory:3096, vCores:8>

原因是Reduce Task在申请资源时超过了设置的最大可申请内容量。检查yarn-site.xml中的配置项yarn.scheduler.maximum-allocation-mb,如下:

阅读全文 »

环境说明

  • Windows 7
  • java version “1.7.0_80”
  • Apache Maven 3.2.3
  • ProtocolBuffer 2.5.0
  • cmake version 3.7.2 win64 x64
  • Windows SDK 7.1

构建过程参照源代码目录下BUILDING.txt说明文件中的“Building on Windows”中的内容;以及我的另外一篇文章:搭建Hadoop源代码阅读环境

阅读全文 »

Unix/Linux下各种命令的参数,都是以减号符(-)后面跟单字符参数,比如-r)或者双减号符(--)(后面紧跟多字符参数,比如--recursive)来表示。 在所有参数后面是文件名或者目录。大多情况下(文件名第一个字符不是减号符(-))这样是没有任何问题的,但是如果文件名第一个字符是-时(比如-myfile),命令就无法区分此时-myfile到底是文件名还是参数名。此时解决方法就是用双减号符(--)来表示命令参数结束了,后面哪怕是以减号符(-)开头的字符串,也被当成文件名处理。

比如rm -r -- -mydir就会递归的(-r)删除-mydir这个目录。

0%