VM cloudera - 用户cloudera和权限?

时间:2014-02-06 14:43:28

标签: hadoop permissions hive cloudera

我下载并安装了VM Cloudera 4.4以与Hadoop一起玩。我已经在我的工作平台上有一个集群,所以我知道如何工作hadoop。所以我认为我的问题来自于我对linux及其用户和群组的误解。


使用Hive:

我尝试用shell创建一个hive表,它可以工作。我在/ user / hive / warehouse / test中有一个表属于组cloudera的用户cloudera。

我在hdfs:/ user / cloudera(用户:cloudera和group:hive)中有一些数据文件(.txt),我在hive表中加载:

LOAD DATA INPATH '/user/cloudera/*.txt' INTO TABLE test;

这是我获得的:

hive> LOAD DATA INPATH '/user/cloudera/jeuDeTest/*.txt' INTO TABLE test;
Loading data to table default.test
chgrp: changing ownership of '/user/hive/warehouse/test/_log24310.txt': User does not belong to hive
chgrp: changing ownership of '/user/hive/warehouse/test/_log24311.txt': User does not belong to hive
Table default.test stats: [num_partitions: 0, num_files: 2, num_rows: 0, total_size: 10161843, raw_data_size: 0]
OK
Time taken: 2.472 seconds

我从来没有遇到过这种错误信息,但文件被移动了。如果我尝试SELECT *,则没有结果。


使用HBase:

我对HBase也有一些困难。我可以创建一个表但是当我使用importTSV时:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv 
-Dimporttsv.columns=HBASE_ROW_KEY,cf:nl,ch:nt,cf:ti,cf:ip,cf:cr,cf:am,cf:op,cf:mr,cf:ct 
'-Dimporttsv.separator=|' testhbase -Dimporttsv.skip.bad.lines=false  
/user/cloudera/jeuDeTest/*.txt

我有这个错误:

ERROR security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:SIMPLE) 
cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: 
hdfs://localhost.localdomain:8020/user/cloudera/jeuDeTest/_logGeneral_C_24310_SO.txt
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist:     
hdfs://localhost.localdomain:8020/user/cloudera/jeuDeTest/_logGeneral_C_24310_SO.txt

我认为这个问题是由权限引起的,但我不知道如何做有权执行请求,有什么更好的方法。 (在我工作的平台上,我是根,我没有这些困难,但我不明白它是如何工作的)

感谢您阅读我。

Angelik


我尝试将我的cloudera用户添加到组配置单元。我在加载过程中没有错误但是我总是没有选择结果。

hive> LOAD DATA INPATH '/user/cloudera/jeuDeTest/*.txt' INTO TABLE test;                     
Loading data to table default.test
Table default.test stats: [num_partitions: 0, num_files: 10, num_rows: 0, total_size: 10161843,   raw_data_size: 0]
OK
Time taken: 0.486 seconds
hive> select * from test limit 20;
OK
Time taken: 0.303 seconds

1 个答案:

答案 0 :(得分:3)

我在权限方面遇到了同样的问题 - > chgrp:更改'/user/hive/warehouse/test/_log24310.txt'的所有权:用户不属于配置单元。

  1. 使用命令将名为cloudera的现有用户添加到名为hive的现有组: usermod -a -G hive cloudera
  2. 重新启动系统
  3. 使用Load Command,之后执行select * from table_name - >没有数据显示。
  4. 从table_name执行select count(*)并启动MapReduce作业。
  5. 从表中执行select *,现在结果已正确返回。
  6. 使用impala-shell命令打开impala shell。
  7. 从table_name执行select *,但未返回任何结果。
  8. 执行的命令使impala-shell中的元数据无效
  9. 执行命令刷新table_name
  10. 执行命令show tables
  11. 执行命令select * from table_name,现在结果显示在impala-shell和hive shell中。