在OpenSuse Tumbleweed 20170703上使用Hadoop 2.8.2设置了一个伪分布式节点(localhost).Java版本为1.8.0_151。通常,它似乎设置正确。我可以格式化hadoop fs -ls
而没有错误等。
但是,当我尝试hdfs
时,会返回当前工作目录中的文件/目录,而不是返回core-site.xml
卷文件(此时应该没有任何内容)的预期行为。
最初关注this guide for CentOS(根据需要进行更改)和Apache Hadoop guide。
我假设它是配置问题,但我不明白为什么会这样。我已经按照下面的hdfs-site.xml
和/opt/hadoop-hdfs-volume/
玩了一下,没有运气。
hadoop
已存在,已分配给用户组hadoop
中的用户/opt/hadoop/
。和/tmp/hadoop-hadoop/dfs/name
目录一样(对于bin的东西)。
修改
hdfs namenode -format
是运行/tmp/
命令的地方。 /tmp/hadoop-dijksterhuis
似乎也拥有我的用户(hadoop
)和*-site.xml
用户目录。
考虑到下面的dfs
配置文件,这对我来说似乎很奇怪。
尝试使用yarn
目录中的.sh
脚本重新启动hadoop/sbin/
和<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-hdfs-volume/${user.name}</value>
</property>
</configuration>
服务。也重新启动了。没有运气!
核心-site.xml中:
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>${hadoop.tmp.dir}/dfs/data</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
HDFS-site.xml中:
Sub addTask(taskName As String, taskDescription As String, taskEXEPath As String, taskParameters As String)
taskName = taskName.Trim
taskDescription = taskDescription.Trim
taskEXEPath = taskEXEPath.Trim
taskParameters = taskParameters.Trim
If Not IO.File.Exists(taskEXEPath) Then
MsgBox("Executable path not found.", MsgBoxStyle.Critical, Me.Text)
Exit Sub
End If
Dim taskService As TaskService = New TaskService()
Dim newTask As TaskDefinition = taskService.NewTask
newTask.RegistrationInfo.Description = taskDescription
If chkEnabled.Checked Then newTask.Triggers.Add(New LogonTrigger)
Dim exeFileInfo As New FileInfo(taskEXEPath)
newTask.Actions.Add(New ExecAction(Chr(34) & taskEXEPath & Chr(34), taskParameters, exeFileInfo.DirectoryName))
newTask.Principal.RunLevel = TaskRunLevel.Highest
newTask.Settings.Compatibility = TaskCompatibility.V2_1
newTask.Settings.AllowDemandStart = True
newTask.Settings.DisallowStartIfOnBatteries = False
newTask.Settings.RunOnlyIfIdle = False
newTask.Settings.StopIfGoingOnBatteries = False
newTask.Settings.AllowHardTerminate = False
newTask.Settings.UseUnifiedSchedulingEngine = True
newTask.Settings.ExecutionTimeLimit = Nothing
newTask.Settings.Priority = ProcessPriorityClass.Normal
newTask.Principal.LogonType = TaskLogonType.InteractiveToken
taskService.RootFolder.SubFolders(strTaskFolderName).RegisterTaskDefinition(taskName, newTask)
newTask.Dispose()
taskService.Dispose()
newTask = Nothing
taskService = Nothing
End Sub
有人有什么想法吗?如果需要,我可以提供更多细节。
答案 0 :(得分:0)
将<div class="col s12 m6 l2">
添加到$HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
用户的hadoop
。
这会覆盖.bashrc
中的值,该值会将namenode指向默认的etc/hadoop-env.sh
目录。
tmp/hadoop-${user-name}
瞧!问题已解决。