我一直在玩Cloudera,我在开始工作之前定义了簇的数量,然后使用cloudera管理器确保一切都在运行.
我正在开发一个新项目,而不是使用hadoop使用消息队列来分配工作,但工作结果存储在HBase中.我可能会启动10个服务器来处理作业并存储到Hbase但是我想知道我以后是否决定添加更多的工作节点我可以轻松(读取:可编程)使它们自动连接到正在运行的集群,以便它们可以在本地添加集群HBase/HDFS?
这有可能吗?为了做到这一点,我需要学习什么?
我将平面文件中的数据加载到配置单元表时获取空值.
我的表结构是这样的:
hive> create table test_hive (id int,value string);
Run Code Online (Sandbox Code Playgroud)
我的平面文件是这样的:input.txt
1 a
2 b
3 c
4 d
5 e
6 F
7 G
8 j
Run Code Online (Sandbox Code Playgroud)
当我运行以下命令时,我得到空值:
hive> LOAD DATA LOCAL INPATH '/home/hduser/input.txt' OVERWRITE INTO TABLE test_hive;
hive> select * from test_hive;
OK<br>
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
NULL NULL
Run Code Online (Sandbox Code Playgroud)
屏幕截图:
hive> create table test_hive (id int,value string);
OK
Time taken: 4.97 seconds
hive> show tables;
OK
test_hive
Time taken: 0.124 …Run Code Online (Sandbox Code Playgroud) tl;dr:为了能够在列出的路径中使用通配符(globs),只需使用globStatus(...)而不是listStatus(...).
我的HDFS集群上的文件按分区进行组织,日期为"根"分区.文件结构的简化示例如下所示:
/schemas_folder
??? date=20140101
? ??? A-schema.avsc
? ??? B-schema.avsc
??? date=20140102
? ??? A-schema.avsc
? ??? B-schema.avsc
? ??? C-schema.avsc
??? date=20140103
??? B-schema.avsc
??? C-schema.avsc
Run Code Online (Sandbox Code Playgroud)
就我而言,该目录在不同日期存储不同类型数据(本例中为A,B和C)的Avro模式.随着时间的推移,模式可能会开始存在,发展并停止存在.
我需要能够尽快获得给定类型的所有模式.在我希望得到类型A存在的所有模式的示例中,我想执行以下操作:
hdfs dfs -ls /schemas_folder/date=*/A-schema.avsc
Run Code Online (Sandbox Code Playgroud)
那会给我
Found 1 items
-rw-r--r-- 3 user group 1234 2014-01-01 12:34 /schemas_folder/date=20140101/A-schema.avsc
Found 1 items
-rw-r--r-- 3 user group 2345 2014-01-02 23:45 /schemas_folder/date=20140102/A-schema.avsc
Run Code Online (Sandbox Code Playgroud)
我不想使用shell命令,似乎无法在Java API中找到与上面的命令等效的东西.当我尝试自己实现循环时,我的表现非常糟糕.我至少想要命令行的性能(在我的情况下大约3秒)......
人们可以注意到它 …
我有两个HDFS设置,并希望将一些表从HDFS1复制(不迁移或移动)到HDFS2.如何将数据从一个HDFS复制到另一个HDFS?是否可以通过Sqoop或其他命令行?
我正在从Impala迁移到SparkSQL,使用以下代码读取表:
my_data = sqlContext.read.parquet('hdfs://my_hdfs_path/my_db.db/my_table')
Run Code Online (Sandbox Code Playgroud)
我如何调用上面的SparkSQL,因此它可以返回如下内容:
'select col_A, col_B from my_table'
Run Code Online (Sandbox Code Playgroud) 有没有办法在HDFS上删除超过10天的文件?
在Linux中我会使用:
find /path/to/directory/ -type f -mtime +10 -name '*.txt' -execdir rm -- {} \;
Run Code Online (Sandbox Code Playgroud)
有没有办法在HDFS上执行此操作?(根据文件创建日期删除)
我想在伪分布式模式下设置一个hadoop-cluster进行开发.由于端口9000上的连接被拒绝,尝试启动hadoop集群失败.
这些是我的配置(非常标准):
网站core.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>~/hacking/hd-data/tmp</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>~/hacking/hd-data/snn</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
HDFS-site.xml中
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>~/hacking/hd-data/nn</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>~/hacking/hd-data/dn</value>
</property>
<property>
<name>dfs.permissions.supergroup</name>
<value>hadoop</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
haddop-env.sh - 这里我只将配置更改为IPv4模式(参见最后一行):
# Set Hadoop-specific environment variables here.
# The only required environment variable is JAVA_HOME. All others are
# optional. When running a distributed configuration it is best to
# set JAVA_HOME …Run Code Online (Sandbox Code Playgroud) 在Reduce设置方法中,我试图关闭一个BufferedReader对象并获得一个FileSystem封闭的异常.它不会一直发生.这是我用来创建的代码片段BufferedReader.
String fileName = <some HDFS file path>
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path hdfsPath = new Path(filename);
FSDataInputStream in = fs.open(hdfsPath);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Run Code Online (Sandbox Code Playgroud)
我从bufferedReader读取内容,一旦完成所有读取,我就关闭它.
这是读取它的代码段
String line;
while ((line = reader.readLine()) != null) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
这段关闭读者的代码.
if (bufferedReader != null) {
bufferedReader.close();
}
Run Code Online (Sandbox Code Playgroud)
这是我执行时发生的异常的堆栈跟踪bufferedReader.close().
我,[2013-11-18T04:56:51.601135#25683]信息 - :attempt_201310111840_142285_r_000009_0:at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:565)
我,[2013-11-18T04:56:51.601168#25683]信息 - :attempt_201310111840_142285_r_000009_0:at org.apache.hadoop.hdfs.DFSInputStream.close(DFSInputStream.java:522)
I,[2013-11-18T04:56:51.601199#25683] INFO - :attempt_201310111840_142285_r_000009_0:at …
我正在研究Hadoop,目前我正在尝试建立一个Hadoop 2.2.0单节点.我下载了最新的发行版,未压缩它,现在我正在尝试设置Hadoop分布式文件系统(HDFS).
现在,我正在尝试遵循这里提供的Hadoop指令,但我很遗憾.
在左侧栏中,您会看到对以下文件的引用:
但这些文件是怎样的?
我找到了/etc/hadoop/hdfs-site.xml,但它是空的!
我找到了/share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml,但它只是一个文档!
那么,我需要修改哪些文件才能配置HDFS?从哪里读取deaults值?
在此先感谢您的帮助.
我看到有hdfs3,snakebite和其他一些.哪一个是最好的支持和全面的?