我正在设置Ubuntu 14.04
单节点群集。我关注hadoop-common/SingleCluster documentation。我在martakarass@marta-komputer:/usr/local/hadoop$ jps
4963 SecondaryNameNode
4785 DataNode
8400 Jps
martakarass@marta-komputer:/usr/local/hadoop$
工作。到目前为止,我已成功运行独立操作。
尝试执行伪分布式操作时遇到错误。我设法启动NameNode守护进程和DataNode守护进程。 jps oputut:
martakarass@marta-komputer:/usr/local/hadoop$ bin/hdfs dfs -mkdir /user
15/05/01 20:36:00 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
mkdir: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "marta-komputer/127.0.0.1"; destination host is: "localhost":9000;
martakarass@marta-komputer:/usr/local/hadoop$
但是当我尝试执行MapReduce作业所需的HDFS目录时,我收到以下错误:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
(我相信此时我可以忽略Hadoop
警告。)
对于<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置文件,我只更改了文档中提到的文件。我有:
等/ hadoop的/芯-site.xml中:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
等/ hadoop的/ HDFS-site.xml中:
martakarass@marta-komputer:~$ ssh localhost
martakarass@localhost's password:
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-45-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Fri May 1 20:28:58 2015 from localhost
我设法连接到localhost:
martakarass@marta-komputer:/usr/local/hadoop$ bin/hdfs namenode -format
15/05/01 20:30:21 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = marta-komputer/127.0.0.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.6.0
(...)
15/05/01 20:30:24 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at marta-komputer/127.0.0.1
************************************************************/
我格式化了文件系统:
127.0.0.1 localhost
127.0.0.1 marta-komputer
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
的/ etc /主机:
marta-komputer
等/主机名:
function encodePath(path) {
var segments = path.split('/'),
i = segments.length;
while (i--) {
segments[i] = encodeUriSegment(segments[i]);
}
return segments.join('/');
}
答案 0 :(得分:2)
这是我在Ubuntu遇到完全相同的问题但我使用2.7.1
时所遵循的一系列步骤,对于以前和将来的版本,步骤应该没有太大差别(我相信)。
/etc/hosts
文件夹的格式: 127.0.0.1 localhost <computer-name>
# 127.0.1.1 <computer-name>
<ip-address> <computer-name>
# Rest of file with no changes
*.xml
配置文件(显示<configuration>
标签内的内容): core-site.xml
:
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
<!-- set value to a directory you want with an absolute path -->
<property>
<name>hadoop.tmp.dir</name>
<value>"set/a/directory/on/your/machine/"</value>
<description>A base for other temporary directories</description>
</property>
hdfs-site.xml
:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
yarn-site.xml
:
<property>
<name>yarn.recourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
mapred-site.xml
:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
$HADOOP_CONF_DIR
:这是验证您确实使用此配置的好机会。在 .xml 文件所在的文件夹中,查看脚本 hadoop_env.sh
的内容,并确保$HADOOP_CONF_DIR
指向正确的目录。
NameNode在我的标准发行版上绑定端口 50070 和 8020 ,DataNode绑定端口 50010 , 50020 ,<强> 50075 和 43758 。运行sudo lsof -i
以确定没有其他服务出于某种原因使用它们。
此时,如果您更改了值hadoop.tmp.dir
,则应该按hdfs namenode -format
重新格式化NameNode。如果不是删除您正在使用的tmp目录中已存在的临时文件(默认/tmp/
):
在 /sbin/
中,使用 start-dfs.sh
脚本启动名称和数据节点,并使用 start-yarn.sh
< / strong>并评估jps的输出:
./start-dfs.sh
./start-yarn.sh
此时,如果NameNode,DataNode,NodeManager和ResourceManager都在运行,您应该设置为go!
如果其中任何一个尚未启动,请共享日志输出以供我们重新评估。
答案 1 :(得分:1)
从127.0.0.1 localhost
移除/etc/hosts
并更改您的core-site.xml
,如下所示:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://marta-komputer:9000</value>
</property>
</configuration>
您可以忽略WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
警告
答案 2 :(得分:1)
在 / etc / hosts 中执行以下更改:
<强> 1。变化强>
127.0.0.1 localhost
到
127.0.0.1 localhost marta-komputer
<强> 2。删除:强>
127.0.0.1 marta-komputer
第3。添加强>
your-system-ip marta-komputer
要查找系统IP,请在终端
中键入ifconfig
(在此处找到您的IP地址)或输入:
ifdata -pa eth0
您的最终 / etc / hosts 文件应如下所示:
127.0.0.1 localhost marta-komputer
your-system-ip marta-komputer
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
更改 hdfs-site.xml :
<强> 1。变化强>
hdfs://localhost:9000
到
hdfs://marta-komputer:9000
现在,停止并启动hadoop进程。
jps 命令应列出以下过程:
Namenode
Datanode
TaskTracker
SecondaryNameNode
如果没有列出所有这些进程,请检查各个日志是否有错误。
<强>更新强>
按照本教程here
如果问题仍然存在,可能是由于权限问题造成的。
更新II:
sudo mkdir -p /usr/local/hdfs/namenode
sudo mkdir -p /usr/local/hdfs/datanode
sudo chown -R hduser:hadoop /usr/local/hdfs/namenode
sudo chown -R hduser:hadoop /usr/local/hdfs/datanode
hdfs-site.xml
: dfs.datanode.data.dir
,其值为/usr/local/hdfs/datanode
dfs.namenode.data.dir
,其值为/usr/local/hdfs/namenode
答案 3 :(得分:0)
当我从java代码上传文件到hdfs时,我遇到了这个错误,问题是我使用hadoop 1 jar连接到hadoop 2安装,不确定你的情况下是什么问题但是如果你配置了hadoop 1个耳机然后必须弄乱它