如何将文件从HDFS复制到本地文件系统。 文件下没有文件的物理位置,甚至没有目录。 我怎么能把他们移到我的本地进一步validation。我通过winscp试过。
这是一个天真的问题,但我是NoSQL范式的新手,不太了解。 所以,如果有人能够帮助我清楚地理解HBase和Hadoop之间的区别,或者给出一些可以帮助我理解差异的指针。 直到现在,我做了一些研究和acc。 根据我的理解,Hadoop提供了在HDFS中使用原始数据块(文件)的框架,HBase是Hadoop之上的数据库引擎,基本上可以使用结构化数据而不是原始数据块。 像SQL一样,Hbase提供了一个HDFS上的逻辑层。 这是对的吗? 请随时纠正我。 谢谢。
我在伪分布式模式下使用Hadoop,一切工作正常。 但之后我不得不重新启动我的电脑,因为某些原因。 而现在当我试图启动Namenode和Datanode时,我只能findDatanode正在运行。 谁能告诉我这个问题的可能原因? 还是我做错了什么? 我试了bin/start-all.sh和bin/start-dfs.sh 。
我是hadoop分布式文件系统的新手,我已经在我的机器上完成了hadoop单节点的完整安装,但之后当我要将数据上传到hdfs时,它给出了一个错误消息Permission Denied 。 来自terminal的消息与命令: hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input put: /usr/local/input-data (Permission denied) hduser@ubuntu:/usr/local/hadoop$ 使用sudo并添加hduser到sudouser之后: hduser@ubuntu:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x hduser@ubuntu:/usr/local/hadoop$
我在HDFS有一个巨大的文件,具有时间序列数据点(雅虎股票价格)。 我想要find时间序列的移动平均线,我该如何着手编写Apache Spark作业来做到这一点。
在Map Reduce编程中,reduce阶段将其作为其子部分进行混洗,sorting和减less。 分拣是一件昂贵的事情。 在Map Reduce Programming中,减速器中的洗牌和分类阶段的目的是什么?
我想在spark中读取CSV并将其转换为DataFrame并使用df.registerTempTable("table_name")将其存储在HDFS中 我努力了: scala> val df = sqlContext.load("hdfs:///csv/file/dir/file.csv") 我得到的错误: java.lang.RuntimeException: hdfs:///csv/file/dir/file.csv is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [49, 59, 54, 10] at parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:418) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:277) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:276) at scala.collection.parallel.mutable.ParArray$Map.leaf(ParArray.scala:658) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply$mcV$sp(Tasks.scala:54) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53) at scala.collection.parallel.Task$class.tryLeaf(Tasks.scala:56) at scala.collection.parallel.mutable.ParArray$Map.tryLeaf(ParArray.scala:650) at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask$class.compute(Tasks.scala:165) at scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks$WrappedTask.compute(Tasks.scala:514) at scala.concurrent.forkjoin.RecursiveAction.exec(RecursiveAction.java:160) at […]
Hadoop明确指南说 – 每个Namenode运行一个轻量级的故障转移控制器进程,其工作是监视Namenode的失败情况 (使用简单的心跳机制),并在namenode失败时触发故障转移。 一个namenode怎么能运行一些东西来检测它自己的失败? 谁向谁发送心跳? 这个过程在哪里运行? 它如何检测namenode失败? 向谁通知过渡?
我想在HDFS中创build一个文件并在其中写入数据。 我用这个代码: Configuration config = new Configuration(); FileSystem fs = FileSystem.get(config); Path filenamePath = new Path("input.txt"); try { if (fs.exists(filenamePath)) { fs.delete(filenamePath, true); } FSDataOutputStream fin = fs.create(filenamePath); fin.writeUTF("hello"); fin.close(); } 它创build文件,但是不会写任何东西。 我搜查了很多,但没有find任何东西。 我的问题是什么? 我需要任何权限写入HDFS? 谢谢。
根据Hadoop – The Definitive Guide FileInputFormats定义的逻辑logging通常不适合HDFS块。 例如,一个TextInputFormat的逻辑logging是行,这将越过HDFS边界。 这对你的程序的function没有任何影响 – 例如,行不会被遗漏或损坏,但值得了解,因为它意味着数据本地映射(即在同一主机上运行的映射input数据)将执行一些远程读取。 这造成的轻微的开销通常并不重要。 假设一条logging线分成两个块(b1和b2)。 处理第一个块(b1)的映射器将注意到最后一行没有EOL分隔符,并从下一个数据块(b2)中提取剩余的行。 映射器如何处理第二个块(b2),确定第一个logging是不完整的,并且应该从块(b2)中的第二个logging开始处理?