Articles of hdfs

parsingnginx日志的工具

我打算将我的请求日志从mongo迁移到nginx日志。 有一些parsing器/工具,我可以用它来parsing日志,并转换为也许JSON为了使他们看起来更有意义,使我可以查询他们? 当前的mongo日志格式: { "_id" : ObjectId("4f911646e4b00a6b7b103c77"), "mUpdatedAt" : NumberLong("1334908486975"), "playerError" : "", "playerState" : "paused", "requestUuid" : "d2c8c8aa-aeab-4f87-8db0-ed699ba19249" } Nginx的日志格式: 115.249.242.17 – – [18/May/2012:05:40:49 +0000] "GET /flashlayer?videoId=NaN&duration=26.091&videoLoadTime=216&videoBitRate=1708 HTTP/1.1" 200 86 "-" "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0" 我能够在mongoDB查询,我也想为nginx日志相同,我需要一个简单的parsing器来读取nginx日志,并转换为可能JSON,CSV或将其放入configuration单元,HDFS。 谢谢

从Java代码运行Linux Hadoop fs命令

我试图从java代码运行一个命令两个合并到文件! 该命令是: hadoop fs -cat /user/clouder/Index_1/part-r-00000 /user/cloudera/Index_2/part-r-00000 | hadoop fs -put – /user/cloudera/mergedfile 该命令在Clouderaterminal上运行完美,但是当我从java代码运行相同的命令时,它会在控制台上显示合并内容,但不会在HDFS上的指定path中创buildmergedfile。 如果mergedfile已经存在,那么它输出文件的早期数据,而不是新合并的数据,如果文件不存在,则不会创build新文件。 在terminal上运行的上述命令创build新文件,如果不存在,则会导致文件错误。 我的java代码如下: process p; try{ p =Runtime.getRuntime().exec("hadoop fs -cat /user/cloudera/Index_1/part-r-00000 /user/cloudera/Index_2/part-r-00000 | hadoop fs -put – /user/cloudera/mergedfile"); BufferredReader br=new BufferedReader(new InputStreamReader(p.getInputStream())); while(s=br.readLine())!=null) { System.out.println(s); } } catch(Exception e) { System.out.println(e.getMessage()); } 我的目的是replace,如果有一个现有的文件或创build一个新的文件,如果不存在从Java代码。

将文件拆分为HDFS中的小文件

我在HDFS有一个名为test.txt的文件。 它包含1000logging。 我想将test.txt分成10个小文件,其中包含相同的logging数。 我可以在下面的Linux做到这一点 split -l $(($(wc -l < test.txt )/10 + 1)) test.txt HDFS是否有类似的function? 我如何在HDFS实现这一点

使用hadoop2(YARN)时连接exception

我在Ubuntu上设置Hadoop(YARN)。 资源pipe理器似乎正在运行。 当我运行hadoop fs -ls命令时,我收到以下错误: 14/09/22 15:52:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable ls: Call From ubuntu-8.abcd/xxx.xxx.xxx.xxxx to ubuntu-8.testMachine:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused 我检查了错误信息中的build议url,但无法弄清楚如何解决这个问题。 我试图在我的core-site.xml文件(在etc / hadoop中)设置外部IP地址(而不是本地主机),但是这并没有解决问题。 IPv6已被禁用。 我正在运行的过程hduser(它具有读/写访问目录)。 任何想法解决这个问题? 我在一个节点上运行这个。 在.bashrc #HADOOP VARIABLES START export JAVA_HOME=/usr/lib/jvm/java-8-oracle export […]

如何比较hdfs文件与Unix文件?

我想比较hdfs文件与unix文件。我知道使用cat命令的一种方法,我们可以比较文件,因为也由Hadoop分布式文件系统(HDFS)提供的cat命令。 举一个例子: # hdfs dfs -ls -R /demo -rw-r–r– 3 root hdfs 129617 2014-10-17 12:22 /demo/abc.log #ls /tmp xyz.log 这里我想比较abc.log到xyz.log 。 任何更好的方法?

如何使用Linux命令获取Ambari HDFS中文件夹的创builddate?

哟, 我试图获取几个文件夹的创builddate。 如果date是14天前,我想删除它。 但是,我找不到合适的hdfs命令来获取创builddate。 我想到: hdfs dfs -ls /mainFolder/subFolder 然后parsing输出。 这是非常不专业的,一定是更简单的方法。 提前致谢!!!

安装并获取当前的dfs.name.dir和dfs.data.dir值

我没有设置hdfs-site.xml文件中的dfs.name.dir和dfs.data.dir值。 他们将会是什么? 而且有趣的是,他们默认接受什么样的价值? (如何获得他们目前的价值?)

recursionsearchgrep

我试图通过HDFSsearch镶木地板文件并列出。 我正在使用这个,这很好。 它查看/sources.works_dbo所有子目录,并给出所有/sources.works_dbo文件: hdfs dfs -ls -R /sources/works_dbo | grep ".*\.parquet$" 然而; 我只想返回它遇到的每个子目录的第一个文件,以便每个子目录只出现在我的输出中的一行中。 说我有这个: sources/works_dbo/test1/file1.parquet sources/works_dbo/test1/file2.parquet sources/works_dbo/test2/file3.parquet 当我运行我的命令,我期望输出如下所示: sources/works_dbo/test1/file1.parquet sources/works_dbo/test2/file3.parquet

看不到hdfs,Hadoop shell命令hadoop fs -ls给出错误无法访问

我面临一个奇怪的问题,我无法看到我的hdfs文件。 每当我做一个hadoop fs -ls我得到下面的错误: hadoop fs -ls Warning: $HADOOP_HOME is deprecated. ls: Cannot access .: No such file or directory. 我可以使用像copyfromlocal等命令,但仍然不能看到他们在hdfs也不能运行猪脚本由于这个问题。 如果我做一个hadoop fs -ls / *我得到下面的错误: hadoop fs -ls /* Warning: $HADOOP_HOME is deprecated. Found 1 items drwxr-xr-x – hduser hadoop 0 2014-02-14 16:49 /app/hadoop ls: Cannot access /bin: No such file or directory. ls: […]

修改hadoop作业中的LD_LIBRARY_PATH JAVA_LIBRARY和CLASSPATH

在运行群集上的hadoop作业之前,我需要修改LD_LIBRARY_PATH JAVA_LIBRARY_PATH和CLASSPATH。 在LD_LIBRARY_PATH和JAVA_LIBRARY_PATH中,我需要添加运行作业所需的一些jar的位置,因为这些jar可以在我的集群中使用,与CLASSPATH类似。 我有一个3 NODE集群,我需要修改所有3个数据节点的LD_LIBRARY_PATH和CLASSPATH,以便在我的集群节点添加到classpath的jar文件中,以便在运行作业时可以使用以下jar作为i在运行作业时避免jar分发,以便在集群节点上使用所有可用的jar。 我已经尝试了以下给出的选项 我试过修改hadoop-env.sh来修改CLASSPATH export HADOOP_TASKTRACKER_OPTS="-classpath:/opt/oracle/oraloader-2.0.0-2/jlib/ 但是上面的东西修改HADOOP_CLASSPATH不是CLASSPATH 对于LD_LIBRARY_PATH和JAVA_LIBRARY_PATH我已经厌倦了在mapred-site.xml中添加下面给出的属性作为build议我的地方,但没有奏效。 <property> <name> mapred.child.env </ name> <value> JAVA_LIBRARY_PATH = / opt / oracle / oraloader-2.0.0-2 / lib / </ value> <value> LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/opt/oracle/oraloader-2.0.0-2/lib/ </ value> <description>用户为任务跟踪器subprocess添加了环境variables。 例如:1)A = foo这将设置envvariablesA为foo 2)B = $ B:c这是inheritancetasktracker的B envvariables。 </ description> </ property> 我也重新启动了我的所有3个数据节点,所有任务拖拉机和2个NAMENOdes。 仍然这些variables没有设置,我的hadoop作业无法find运行testing所需的所有jar文件。 错误日志:: 错误:java.lang.ClassNotFoundException:java.net.URLClassLoader上的oracle.i18n.text.OraDateFormat $ […]