我已经下载并启动了Cloudera的Hadoop Demo VM for CDH4(运行Hadoop 2.0.0).我正在尝试编写一个将从我的Windows 7机器运行的Java程序(与运行VM的机器/操作系统相同).我有一个示例程序,如:
public static void main(String[] args) {
try{
Configuration conf = new Configuration();
conf.addResource("config.xml");
FileSystem fs = FileSystem.get(conf);
FSDataOutputStream fdos=fs.create(new Path("/testing/file01.txt"), true);
fdos.writeBytes("Test text for the txt file");
fdos.flush();
fdos.close();
fs.close();
}catch(Exception e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我的config.xml文件只定义了属性:fs.default.name = hdfs:// CDH4_IP:8020.
当我运行它时,我得到以下异常:
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /testing/file01.txt could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and 1 node(s) are excluded in this operation.
at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1322)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2170)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:471) …Run Code Online (Sandbox Code Playgroud) 我在HDFS中有1000多个文件,其命名约定1_fileName.txt为N_fileName.txt.每个文件的大小为1024 MB.我需要将这些文件合并为一个(HDFS)并保持文件的顺序.说5_FileName.txt应该只追加4_fileName.txt
执行此操作的最佳和最快方法是什么.
是否有任何方法可以在不复制数据节点之间的实际数据的情况下执行此合并?例如:获取此文件的块位置并在Namenode中创建具有这些块位置的新条目(FileName)?
我试图了解hadoop在HDFS中存储数据的位置.我指的是配置文件即:core-site.xml和hdfs-site.xml
我设置的属性是:
在core-site.xml:
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
Run Code Online (Sandbox Code Playgroud)在hdfs-site.xml:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/hdfs/datanode</value>
</property>
Run Code Online (Sandbox Code Playgroud)通过上述安排,dfs.datanode.data.dir数据块应该存储在该目录中.它是否正确?
我提到了apache hadoop链接,从中我看到了这个:
core-default.xml: hadoop.tmp.dir- >其他临时目录的基础.
hdfs-default.xml dfs.datanode.data.dir - >确定DFS数据节点应在何处存储其块的本地文件系统.
此属性的默认值为 - > file://${hadoop.tmp.dir}/dfs/data
由于我明确提供了dfs.datanode.data.dir(hdfs-site.xml)的值,它是否意味着数据将存储在该位置?如果是这样,将dfs/data添加到目录中${dfs.datanode.data.dir},特别是它会变成 - > /hadoop/hdfs/datanode/dfs/data?
但是我没有看到这个目录结构被创建.
我在环境中看到的一个观察结果:
我看到在运行一些MapReduce程序之后,创建了这个目录,即:
/hadoop/tmp/dfs/data正在创建.
因此,不确定数据是否存储在属性dfs.datanode.data.dir所建议的目录中.
有没有人有类似的经历?
我是新来的火花,我想使用group-by&reduce从CSV中找到以下内容(使用一行):
Department, Designation, costToCompany, State
Sales, Trainee, 12000, UP
Sales, Lead, 32000, AP
Sales, Lead, 32000, LA
Sales, Lead, 32000, TN
Sales, Lead, 32000, AP
Sales, Lead, 32000, TN
Sales, Lead, 32000, LA
Sales, Lead, 32000, LA
Marketing, Associate, 18000, TN
Marketing, Associate, 18000, TN
HR, Manager, 58000, TN
Run Code Online (Sandbox Code Playgroud)
我想通过Department,Designation,State简化包含sum(costToCompany)和TotalEmployeeCount的附加列的CSV
应得到如下结果:
Dept, Desg, state, empCount, totalCost
Sales,Lead,AP,2,64000
Sales,Lead,LA,3,96000
Sales,Lead,TN,2,64000
Run Code Online (Sandbox Code Playgroud)
有没有办法使用转换和动作来实现这一点.或者我们应该进行RDD操作?
我需要从外部源(如Windows框)将数据写入Hadoop(HDFS).现在我一直在将数据复制到namenode上,并使用HDFS的put命令将其摄取到集群中.在我浏览代码时,我没有看到用于执行此操作的API.我希望有人可以告诉我我错了,并且有一种简单的方法可以对外部客户端进行HDFS编码.
如何从pandas HDFStore中检索特定列?我经常处理非常大的数据集,这些数据集太大而无法在内存中操作.我想迭代地读取一个csv文件,将每个块附加到HDFStore对象中,然后处理数据的子集.我已经阅读了一个简单的csv文件,并使用以下代码将其加载到HDFStore中:
tmp = pd.HDFStore('test.h5')
chunker = pd.read_csv('cars.csv', iterator=True, chunksize=10, names=['make','model','drop'])
tmp.append('df', pd.concat([chunk for chunk in chunker], ignore_index=True))
Run Code Online (Sandbox Code Playgroud)
并输出:
In [97]: tmp
Out[97]:
<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
/df frame_table (typ->appendable,nrows->1930,indexers->[index])
Run Code Online (Sandbox Code Playgroud)
我的问题是如何从中访问特定列tmp['df']?该文档提到了一种select()方法和一些Term对象.提供的示例适用于小组数据; 然而,我太过新手,无法将其扩展到更简单的数据框案例.我的猜测是我必须以某种方式创建列的索引.谢谢!
我目前正在使用Hadoop-2.0.3-alpha,之后我可以完美地使用HDFS(将文件复制到HDFS,从外部框架获得成功,使用webfrontend),在我的VM重新启动后,datanode进程正在停止过了一会儿.namenode进程和所有纱线进程都没有问题.我在另一个用户下的一个文件夹中安装了Hadoop,因为我还安装了Hadoop 0.2,它也运行良好.看一下所有datanode进程的日志文件,我得到了以下信息:
2013-04-11 16:23:50,475 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2013-04-11 16:24:17,451 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-04-11 16:24:23,276 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2013-04-11 16:24:23,279 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2013-04-11 16:24:23,480 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Configured hostname is user-VirtualBox
2013-04-11 16:24:28,896 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened streaming server at /0.0.0.0:50010
2013-04-11 16:24:29,239 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwith is 1048576 bytes/s
2013-04-11 16:24:38,348 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog …Run Code Online (Sandbox Code Playgroud) 任何文件系统都应提供API来访问其文件和目录等.
那么,"HDFS缺少随机读写访问"是什么意思?
所以,我们应该使用HBase.
我想在Hadoop YARN集群模式下运行我的spark Job ,我使用以下命令:
spark-submit --master yarn-cluster
--driver-memory 1g
--executor-memory 1g
--executor-cores 1
--class com.dc.analysis.jobs.AggregationJob
sparkanalitic.jar param1 param2 param3
Run Code Online (Sandbox Code Playgroud)
我收到错误,请提出错误,命令是否正确.我正在使用CDH 5.3.1.
Diagnostics: Application application_1424284032717_0066 failed 2 times due
to AM Container for appattempt_1424284032717_0066_000002 exited with
exitCode: 15 due to: Exception from container-launch.
Container id: container_1424284032717_0066_02_000001
Exit code: 15
Stack trace: ExitCodeException exitCode=15:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:538)
at org.apache.hadoop.util.Shell.run(Shell.java:455)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:702)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:197)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:299)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:81)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Container exited with a non-zero exit …Run Code Online (Sandbox Code Playgroud) hdfs ×10
hadoop ×9
apache-spark ×2
java ×2
cloudera ×1
file ×1
hadoop-yarn ×1
hbase ×1
pandas ×1
python ×1