问题:使用Hadoop CDH 5.4中提供的KMS启用HDFS加密时,将文件放入加密区时会出现错误.
脚步:
加密Hadoop的步骤如下:
创建密钥[SUCCESS]
[tester@master ~]$ hadoop key create 'TDEHDP'
-provider kms://https@10.1.118.1/key_generator/kms -size 128
tde group has been successfully created with options
Options{cipher='AES/CTR/NoPadding', bitLength=128, description='null', attributes=null}.
KMSClientProvider[https://10.1.118.1/key_generator/kms/v1/] has been updated.
Run Code Online (Sandbox Code Playgroud)2.创建目录[SUCCESS]
[tester@master ~]$ hdfs dfs -mkdir /user/tester/vs_key_testdir
Run Code Online (Sandbox Code Playgroud)
添加加密区[成功]
[tester@master ~]$ hdfs crypto -createZone -keyName 'TDEHDP'
-path /user/tester/vs_key_testdir
Added encryption zone /user/tester/vs_key_testdir
Run Code Online (Sandbox Code Playgroud)将文件复制到加密区[错误]
[tdetester@master ~]$ hdfs dfs -copyFromLocal test.txt /user/tester/vs_key_testdir
Run Code Online (Sandbox Code Playgroud)15/09/04 06:06:33错误hdfs.KeyProviderCache:用密钥[dfs.encryption.key.provider.uri]找不到uri来创建keyProvider !! copyFromLocal:没有配置KeyProvider,无法访问加密文件15/09/04 06:06:33错误hdfs.DFSClient:无法关闭inode 20823 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs. server.namenode.LeaseExpiredException):/user/tester/vs_key_testdir/test.txt上没有租约.COPYING(inode 20823):文件不存在.持有人DFSClient_NONMAPREDUCE_1061684229_1没有任何打开的文件.
任何想法/建议都会有所帮助.
我正在评估多个大数据工具.其中一个当然是Impala.
我想通过手动启动集群节点上的进程来启动Impala集群.正如我目前正在为Spark,H2O,Presto和Dask做的那样,我想抓住二进制文件,复制到节点,编辑配置,并从shell启动节点上的服务.这非常有效,升级很简单,我可以在需要时轻松移动到更大/不同的集群.不幸的是,我找不到从shell启动所需服务(Catalog Server,StateStore和daemon)的正确方法的资源.
我认为这是明显的任务但是找不到合适的例子,所以我的问题是如何从shell调用Impala二进制文件启动Impala集群?
我正在尝试使用cloudera Manager 5.9在单个VM中设置hadoop集群(为简单起见).以下是我的环境的详细信息:
Host OS -> Windows 10
Virtualization software -> Virtual box 5.1.10
Guest OS -> Cent OS 6.8
Run Code Online (Sandbox Code Playgroud)
我安装了Cloudera Manager,按照Cloudera Manager的说明,按照步骤操作.
大多数安装步骤都很顺利,但在最后一次检查时失败了.下面是屏幕截图.
从屏幕截图中可以看出,它给出了错误:
"意外错误.无法验证数据库连接."
我已经对Cloudera默认使用的Postgres DB的配置文件进行了必要的更改,也就是说它应该能够接受远程连接.
Cloudera经理的日志中没有错误.我也做了在线搜索,但没有成功.
谁能帮我解决这个错误?
将我们的小型Cloudera Hadoop集群升级到CDH 5后,删除文件不再释放可用的存储空间.即使我们删除的数据多于我们添加的数据,文件系统也会不断填满.
我们在物理专用硬件上运行四节点群集,总存储容量为110 TB.4月3日,我们将CDH软件从5.0.0-beta2版本升级到5.0.0-1版本.
我们以前习惯以纯文本格式将日志数据放在hdfs上,速率约为700 GB /天.在4月1日,我们改为将数据导入为.gz文件,这将每日摄取率降低到大约130 GB.
由于我们只想保留一定年龄的数据,因此每晚都要删除过时的文件.以前的结果在hdfs容量监控图表中清晰可见,但无法再看到.
我们导入的数据比我们每天删除的数据少570 GB,人们可能会认为容量会下降.但是,自集群软件升级以来,我们报告的hdfs使用量一直在增长.
运行hdfs hadoop fs -du -h /提供以下输出:
0 /system
1.3 T /tmp
24.3 T /user
Run Code Online (Sandbox Code Playgroud)
考虑到导入文件的大小,这与我们期望看到的一致.使用复制因子3,这应该对应于大约76.8 TB的物理磁盘使用量.
相反,当运行时hdfs dfsadmin -report结果是不同的:
Configured Capacity: 125179101388800 (113.85 TB)
Present Capacity: 119134820995005 (108.35 TB)
DFS Remaining: 10020134191104 (9.11 TB)
DFS Used: 109114686803901 (99.24 TB)
DFS Used%: 91.59%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Run Code Online (Sandbox Code Playgroud)
这里,DFS Used报告为99.24 TB,这是我们在监控图表中看到的.所有这些数据都来自哪里?
我们怀疑的第一件事就是垃圾的自动排空不起作用,但情况似乎并非如此.只有最近删除的文件在垃圾箱中,并且它们会在一天后自动消失.
我们的问题看起来非常类似于执行hdfs元数据升级但未完成的情况.在这些版本之间进行升级时,我不认为这是必需的,但仍然执行了两个步骤"以防万一".
在本地文件系统中的DN存储卷上,"previous/finalized"下有很多数据.我对hdsf的实现细节知之甚少,不知道这是否有意义,但它可能表明最终确定的内容不同步.
我们很快就会耗尽集群上的磁盘空间,所以非常感谢任何帮助.
我们使用Cloudera Manager启用Namenode High Availability
Cloudera Manager >> HDFS >> Action> Enable High Availability >> Selected Stand By Namenode&Journal Nodes然后nameservice1
完成整个过程后,部署客户端配置.
通过列出HDFS目录(hadoop fs -ls /)从Client Machine进行测试,然后手动故障转移到备用namenode并再次列出HDFS目录(hadoop fs -ls /).这项测试完美无缺.
但是当我使用以下命令运行hadoop睡眠作业时它失败了
$ hadoop jar /opt/cloudera/parcels/CDH-4.6.0-1.cdh4.6.0.p0.26/lib/hadoop-0.20-mapreduce/hadoop-examples.jar sleep -m 1 -r 0
java.lang.IllegalArgumentException: java.net.UnknownHostException: nameservice1
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:414)
at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:164)
at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:129)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:448)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:410)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:128)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2308)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:87)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2342)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2324)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:351)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:194)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:103)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:980)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:974)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:974) …Run Code Online (Sandbox Code Playgroud) 这实际上是备用HA名称节点.它配置了与主服务器相同的设置并hdfs namenode -bootstrapStandby成功运行.它开始出现在配置文件中定义的标准HTTP端口50070上:
<property>
<name>dfs.namenode.http-address.ha-hadoop.namenode2</name>
<value>namenode2:50070</value>
</property>
Run Code Online (Sandbox Code Playgroud)
启动开始OK然后点击:
15/02/02 08:06:17 INFO hdfs.DFSUtil: Starting Web-server for hdfs at: http://hadoop1:50070
15/02/02 08:06:17 INFO mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
15/02/02 08:06:17 INFO http.HttpRequestLog: Http request log for http.requests.namenode is not defined
15/02/02 08:06:17 INFO http.HttpServer2: Added global filter 'safety' (class=org.apache.hadoop.http.HttpServer2$QuotingInputFilter)
15/02/02 08:06:17 INFO http.HttpServer2: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter) to context hdfs
15/02/02 08:06:17 INFO http.HttpServer2: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter) to context logs
15/02/02 08:06:17 INFO http.HttpServer2: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter) …Run Code Online (Sandbox Code Playgroud) 我现在正在使用CDH 5.1.它开始正常的Hadoop工作,YARN但蜂巢仍然可以使用mapred.有时一个大的查询会挂起很长一段时间,我想杀了它.
我可以通过JobTracker Web控制台找到这个重要的工作,而它没有提供杀死它的按钮.
另一种方法是通过命令行查杀.但是,我找不到任何通过命令行运行的作业.
我试过2个命令:
yarn application -listmapred job -list如何杀死这样的大查询?
在80%已满的YARN集群中,我们看到一些纱线节点管理器被标记为不健康.在挖掘日志之后我发现了它,因为数据目录的磁盘空间已满90%.有以下错误
2015-02-21 08:33:51,590 INFO org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl: Node hdp009.abc.com:8041 reported UNHEALTHY with details: 4/4 local-dirs are bad: /data3/yarn/nm,/data2/yarn/nm,/data4/yarn/nm,/data1/yarn/nm;
2015-02-21 08:33:51,590 INFO org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl: hdp009.abc.com:8041 Node Transitioned from RUNNING to UNHEALTHY
Run Code Online (Sandbox Code Playgroud)
我试图了解纱线如何标记节点不健康&有没有办法改变门槛?
谢谢
hadoop distributed-computing cloudera hadoop-yarn cloudera-cdh
我正在评估Hive,需要在group by之后进行一些字符串字段连接.我找到了一个名为"concat_ws"的函数,但看起来我必须明确列出要连接的所有值.我想知道我是否可以在Hive中使用concat_ws做这样的事情.这是一个例子.所以我有一个名为"my_table"的表,它有两个名为country和city的字段.我想每个国家只有一条记录,每条记录都有两个字段 - 国家和城市:
select country, concat_ws(city, "|") as cities
from my_table
group by country
Run Code Online (Sandbox Code Playgroud)
这可能在Hive中吗?我现在正在使用CDH5的Hive 0.11
我正在尝试在不使用CDM的情况下安装psuedo-distributed CDH.一切都通过控制台"工作".但是,第二个我开始使用Hue,我在尝试使用Pig时收到错误.
Hue中显示的错误是:
JA017:无法查找与动作[0000000-160112011607704-oozie-oozi-W @ pig]相关的已启动的hadoop作业ID [job_local2125047777_0001].失败了这个动作!
我认为这是由于Oozie工作流问题将Pig连接到作业历史记录服务器而导致的错误传达而产生的错误.
在此之前,我无法使用Hue的Hive,因为Oozie难以在HDFS上为Oozie安装sharelib.我通过在/etc/hadoop/conf/core-site.xml和之间创建一个符号链接来解决这个问题/etc/oozie/conf/hadoop-conf/core-site.xml.正如此处所示:Apache Oozie无法加载ShareLib
我编写的将CDH安装到Scientific Linux 7上的配置脚本可以在这里找到:https://github.com/coatless/stat490uiuc/blob/master/install_scripts/cdh_build.sh
具体来说,我试图从猪脚本中获得结果:
data = LOAD '/user/hue/pig/examples/data/midsummer.txt' as (text:CHARARRAY);
upper_case = FOREACH data GENERATE org.apache.pig.piggybank.evaluation.string.UPPER(text);
STORE upper_case INTO '$output' ;
Run Code Online (Sandbox Code Playgroud)
从谷歌搜索,我遇到了以下解决方案,一旦实施,还没有解决.
建议运行以下命令:
sudo -u hdfs hadoop fs -mkdir -p /user/history
sudo -u hdfs hadoop fs -chmod -R 1777 /user/history
sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history
Run Code Online (Sandbox Code Playgroud)
重新启动资源和节点管理器,HDFS和历史记录服务器无济于事.
在线程中,有另一个用户建议在job.properties指定的属性中设置属性user.name=mapred.但是,我找不到对Hue作业的job.properties的任何引用.
这篇文章建议在mapred-site.xml …
cloudera-cdh ×10
hadoop ×8
hadoop-yarn ×3
hdfs ×3
cloudera ×2
hadoop2 ×2
hive ×2
bigdata ×1
copy ×1
encryption ×1
hue ×1
impala ×1
mapreduce ×1
postgresql ×1
standby ×1