Lea*_*ner 22 ubuntu hadoop amazon-ec2 hdfs hadoop2
我已经建立了一个多节点Hadoop集群.NameNode和Secondary namenode在同一台机器上运行,集群只有一个Datanode.所有节点都在Amazon EC2计算机上配置.
masters
54.68.218.192 (public IP of the master node)
slaves
54.68.169.62 (public IP of the slave node)
Run Code Online (Sandbox Code Playgroud)
核心的site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
mapred-site.xml中
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
HDFS-site.xml中
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
核心的site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://54.68.218.192:10001</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
mapred-site.xml中
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>54.68.218.192:10002</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
HDFS-site.xml中
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在Namenode上运行的jps给出以下内容:
5696 NameNode
6504 Jps
5905 SecondaryNameNode
6040 ResourceManager
Run Code Online (Sandbox Code Playgroud)
和datanode上的jps:
2883 DataNode
3496 Jps
3381 NodeManager
Run Code Online (Sandbox Code Playgroud)
对我来说似乎是对的.
现在,当我尝试运行put命令时:
hadoop fs -put count_inputfile /test/input/
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
put: File /count_inputfile._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.
Run Code Online (Sandbox Code Playgroud)
datanode上的日志说明如下:
hadoop-datanode log
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: 54.68.218.192/54.68.218.192:10001. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
Run Code Online (Sandbox Code Playgroud)
yarn-nodemanager日志:
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8031. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
Run Code Online (Sandbox Code Playgroud)
节点管理器(50070)的Web UI显示有0个活动节点和0个死节点,并且使用的dfs是100%
我也禁用了IPV6.
在一些网站上我发现我也应该编辑该/etc/hosts
文件.我也编辑了它们,它们看起来像这样:
127.0.0.1 localhost
172.31.25.151 ip-172-31-25-151.us-west-2.compute.internal
172.31.25.152 ip-172-31-25-152.us-west-2.compute.internal
Run Code Online (Sandbox Code Playgroud)
为什么我仍然在犯这个错误?
pra*_*upd 26
两件事对我有用,
第1步:停止hadoop并清理临时文件 hduser
sudo rm -R /tmp/*
Run Code Online (Sandbox Code Playgroud)
此外,您可能需要删除并重新创建 /app/hadoop/tmp
(主要是当我将hadoop版本更改2.2.0
为2.7.0
)时
sudo rm -r /app/hadoop/tmp
sudo mkdir -p /app/hadoop/tmp
sudo chown hduser:hadoop /app/hadoop/tmp
sudo chmod 750 /app/hadoop/tmp
Run Code Online (Sandbox Code Playgroud)
第2步:格式化namenode
hdfs namenode -format
Run Code Online (Sandbox Code Playgroud)
现在,我可以看到DataNode
hduser@prayagupd:~$ jps
19135 NameNode
20497 Jps
19477 DataNode
20447 NodeManager
19902 SecondaryNameNode
20106 ResourceManager
Run Code Online (Sandbox Code Playgroud)
Tam*_*n S 10
不正确关闭节点后,我遇到了同样的问题.同样在UI中检查未列出datanode.
现在它在从datanode文件夹中删除文件并重新启动服务后正在工作.
stop-all.sh
rm -rf/usr/local/hadoop_store/hdfs/datanode/*
start-all.sh
@Learner,
我在Namenode的web UI中没有显示datanode的这个问题.通过Hadoop 2.4.1中的这些步骤解决了这个问题.
为所有节点(主节点和从节点)执行此操作
1.删除所有临时文件(默认情况下在/ tmp中) - sudo rm -R /tmp/*
.
2.现在尝试通过在主服务器中ssh
使用ssh username@host
和添加密钥来连接到所有节点,ssh-copy-id -i ~/.ssh/id_rsa.pub username@host
以便向主服务器提供对服务器的无限制访问(不这样做可能是拒绝连接的问题).
3.使用namenode格式化hadoop namenode -format
并尝试重新启动守护进程.
小智 5
在我的情况下,firewalld 服务正在运行。这是默认配置。并且它不允许节点之间的通信。我的 hadoop 集群是一个测试集群。因此,我停止了该服务。如果您的服务器正在生产中,您应该在 firewalld 上允许 hadoop 端口,而不是
service firewalld stop
chkconfig firewalld off
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52392 次 |
最近记录: |