我根据http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/中的演练设置了一个4节点的hadoop集群.我使用了1的复制(该集群仅用于测试)
我从本地复制了一个2GB的文件.在http接口中浏览文件时,我看到它被拆分为31个块,但所有这些都在一个节点上(主节点)
它是否正确?我该如何调查原因?
介绍
已经安装并运行了Hadoop NameNode和三个DataNode.下一步是向HDFS提供文件.已执行以下命令:
hadoop fs -copyFromLocal ubuntu-14.04-desktop-amd64.iso
copyFromLocal: `.': No such file or directory
Run Code Online (Sandbox Code Playgroud)
和
hadoop fs -put ubuntu-14.04-desktop-amd64.iso
put: `.': No such file or directory
Run Code Online (Sandbox Code Playgroud)
没有成功.
题
需要发出哪个命令才能在HDFS上存储文件?
我必须将HDFS文件导出到MySql中.
假设我的HDFS文件是:
1,abcd,23
2,efgh,24
3,ijkl,25
4,mnop,26
5,qrst,27
Run Code Online (Sandbox Code Playgroud)
并说我的Mysql数据库架构是:
+-----+-----+-------------+
| ID | AGE | NAME |
+-----+-----+-------------+
| | | |
+-----+-----+-------------+
Run Code Online (Sandbox Code Playgroud)
当我使用以下Sqoop命令插入时:
sqoop export \
--connect jdbc:mysql://localhost/DBNAME \
--username root \
--password root \
--export-dir /input/abc \
--table test \
--fields-terminated-by "," \
--columns "id,name,age"
Run Code Online (Sandbox Code Playgroud)
它工作正常并插入数据库.
但是,当我需要更新已经存在的记录时,我必须使用--update-key和--columns.
现在,当我尝试使用以下命令更新表时:
sqoop export \
--connect jdbc:mysql://localhost/DBNAME \
--username root \
--password root \
--export-dir /input/abc \
--table test \
--fields-terminated-by "," \
--columns "id,name,age" \
--update-key id
Run Code Online (Sandbox Code Playgroud)
我面临的问题是数据没有更新到列中的指定 …
我有一个使用 Flume 向 HDFS 发送 log4j 消息的玩具设置。我无法配置 hdfs 接收器以避免出现许多小文件。我以为我可以配置 hdfs 接收器在每次文件大小达到 10mb 时创建一个新文件,但它仍然创建大约 1.5KB 的文件。
这是我当前的水槽配置:
a1.sources=o1
a1.sinks=i1
a1.channels=c1
#source configuration
a1.sources.o1.type=avro
a1.sources.o1.bind=0.0.0.0
a1.sources.o1.port=41414
#sink config
a1.sinks.i1.type=hdfs
a1.sinks.i1.hdfs.path=hdfs://localhost:8020/user/myName/flume/events
#never roll-based on time
a1.sinks.i1.hdfs.rollInterval=0
#10MB=10485760
a1.sinks.il.hdfs.rollSize=10485760
#never roll base on number of events
a1.sinks.il.hdfs.rollCount=0
#channle config
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
a1.sources.o1.channels=c1
a1.sinks.i1.channel=c1
Run Code Online (Sandbox Code Playgroud) 我正在对 Hadoop 框架进行一些研究。我想问一下框架中可以使用的属性..例如
有什么参考资料可以让我了解这个框架的整个属性列表吗?非常希望有人可以帮助我。
另外我想问一下,io.sort.mb和mapreduce.task.io.sort.mb有什么区别吗?或者他们只是一样?
我正在使用Cloudera Quickstart VM CDH5.3.0(就parcels包而言)和Spark 1.2.0 $SPARK_HOME=/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark使用命令并使用命令提交Spark应用程序
./bin/spark-submit --class <Spark_App_Main_Class_Name> --master spark://localhost.localdomain:7077 --deploy-mode client --executor-memory 4G ../apps/<Spark_App_Target_Jar_Name>.jar
Spark_App_Main_Class_Name.scala
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.mllib.util.MLUtils
object Spark_App_Main_Class_Name {
def main(args: Array[String]) {
val hConf = new SparkConf()
.set("fs.hdfs.impl", classOf[org.apache.hadoop.hdfs.DistributedFileSystem].getName)
.set("fs.file.impl", classOf[org.apache.hadoop.fs.LocalFileSystem].getName)
val sc = new SparkContext(hConf)
val data = MLUtils.loadLibSVMFile(sc, "hdfs://localhost.localdomain:8020/analytics/data/mllib/sample_libsvm_data.txt")
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是我在客户端模式下提交应用程序时获得了ClassNotFoundExceptionfororg.apache.hadoop.hdfs.DistributedFileSystem
[cloudera@localhost bin]$ ./spark-submit --class Spark_App_Main_Class_Name --master spark://localhost.localdomain:7077 --deploy-mode client --executor-memory 4G ../apps/Spark_App_Target_Jar_Name.jar
15/11/30 09:46:34 INFO SparkContext: Spark configuration:
spark.app.name=Spark_App_Main_Class_Name
spark.driver.extraLibraryPath=/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hadoop/lib/native
spark.eventLog.dir=hdfs://localhost.localdomain:8020/user/spark/applicationHistory
spark.eventLog.enabled=true
spark.executor.extraLibraryPath=/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hadoop/lib/native …Run Code Online (Sandbox Code Playgroud) 我想了解以下术语:
hadoop(单节点和多节点) spark master spark worker namenode datanode
到目前为止我所理解的是 spark master 是作业执行者并处理所有 spark 工人。而 hadoop 是 hdfs(我们的数据所在的位置),spark 工作人员根据分配给他们的工作从中读取数据。如果我错了,请纠正我。
我也想了解namenode和datanode的作用。虽然我知道 namenode 的作用(拥有所有数据节点的元数据信息,最好只有一个,但也可以是两个),而数据节点可以是多个并拥有数据。
datanodes 是相同的 hadoop 节点吗?
我需要在HDFS上存储大约10TB的大文件.我需要了解的是HDFS将如何存储此文件.比如,群集的复制因子是3,我有一个10节点群集,每个节点上有超过10 TB的磁盘空间,即总群集容量超过100TB.
现在,HDFS随机选择三个节点并将文件存储在这三个节点上.那么这就像听起来一样简单.请确认?
或者HDFS将文件分割 - 比如说每个10T分割1TB,然后将每个分割存储在随机选择的3个节点上.分裂是可能的,如果是,则是启用它的配置方面.如果HDFS必须拆分二进制文件或文本文件 - 它是如何拆分的.只需按字节.
我正在编写一个spark / scala程序,以读取ZIP文件,将其解压缩并将内容写入一组新文件。我可以将其用于写入本地文件系统,但想知道是否存在一种将输出文件写入分布式文件系统(例如HDFS)的方法。代码如下所示。
import java.util.zip.ZipInputStream
import org.apache.spark.input.PortableDataStream
import java.io._
var i =1
sc.binaryFiles("file:///d/tmp/zips/").flatMap((file:(String, PortableDataStream)) => {
val zipStream = new ZipInputStream(file._2.open)
val entry = zipStream.getNextEntry
val iter = scala.io.Source.fromInputStream(zipStream).getLines
val fname = f"/d/tmp/myfile$i.txt"
i = i + 1
val xx = iter.mkString
val writer = new PrintWriter(new File(fname))
writer.write(xx)
writer.close()
iter
}).collect()
Run Code Online (Sandbox Code Playgroud)
`
我们已经在HDFS目录中存储了* .tfrecord文件的列表。我想使用新的Dataset API,但给出的唯一示例是使用旧的filequeue和string_input_producer(https://www.tensorflow.org/deploy/hadoop)。这些方法使得很难产生时期。
是否可以将HDFS与Dataset API结合使用?
hdfs ×10
hadoop ×7
apache-spark ×3
java ×2
mapreduce ×2
scala ×2
bigdata ×1
dictionary ×1
file ×1
flume ×1
flume-ng ×1
linux ×1
sqoop2 ×1
tensorflow ×1