Xml 拥有多个根是非法的(epilog中的开始标记?)

Xml 拥有多个根是非法的(epilog中的开始标记?),xml,Xml,我在设置hadoop时出错 java.lang.RuntimeException:com.ctc.wstx.exc.WstxParsingException:拥有多个根(epilog中的开始标记?)是非法的。 在[行、列、系统id]:[8,2,“文件:/usr/local/hadoop/etc/hadoop/core site.xml”] 核心站点.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type=

我在设置hadoop时出错

java.lang.RuntimeException:com.ctc.wstx.exc.WstxParsingException:拥有多个根(epilog中的开始标记?)是非法的。 在[行、列、系统id]:[8,2,“文件:/usr/local/hadoop/etc/hadoop/core site.xml”]

核心站点.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/app/hadoop/tmp</value>
    <description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.</description>
</property>

hadoop.tmp.dir
/app/hadoop/tmp
其他临时目录的基础。
fs.default.name
hdfs://localhost:9000
默认文件系统的名称。其方案和权限决定文件系统实现的URI。uri的方案确定命名文件系统实现类的配置属性(fs.scheme.impl)。uri的权限用于确定文件系统的主机、端口等。

上面的错误似乎是由于xml的格式造成的。我可以知道如何修复此类错误吗?

XML只能有一个顶级(“根”)元素(
不包括处理说明)。在Hadoop的
核心站点.xml
中,这个标签应该是
。因此,请尝试以下方法:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/app/hadoop/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
        <description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.</description>
    </property>
<configuration>

hadoop.tmp.dir
/app/hadoop/tmp
其他临时目录的基础。
fs.default.name
hdfs://localhost:9000
默认文件系统的名称。其方案和权限决定文件系统实现的URI。uri的方案确定命名文件系统实现类的配置属性(fs.scheme.impl)。uri的权限用于确定文件系统的主机、端口等。

按照以下步骤安装hadoop: 在分布式模式下安装HADOOP的步骤 步骤1:-

步骤1:-打开/root/.bashrc文件并在文件中添加以下行

export HADOOP_HOME=/usr/lib/hadoop_package/hadoop-2.5.6
export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME 
export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
步骤2:-现在将所有更改应用到当前运行的系统中。 source~/.bashrc 现在开始Hadoop配置 步骤3:-您可以在“$Hadoop\u HOME/etc/Hadoop”位置找到所有Hadoop配置文件。您需要根据Hadoop基础设施对这些配置文件进行必要的更改。 $cd$HADOOP\u HOME/etc/HADOOP 为了使用java开发Hadoop程序,必须用java在系统中的位置替换java_HOME值,从而重置Hadoop-env.sh文件中的java环境变量。 gedit hadoop-env.sh并将java路径添加到此文件 导出JAVA_HOME=/usr/lib/hadoop_包/jdk1.8.0_161

步骤4:-core-site.xml core-site.xml文件包含用于Hadoop实例的端口号、为文件系统分配的内存、存储数据的内存限制以及读/写缓冲区的大小等信息。 打开core-site.xml并在和标记之间添加以下属性

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>    //  hdfs://192.168.64.131:9000   <master ip>
</property>
</configuration>

fs.default.name
hdfs://localhost:9000    //  hdfs://192.168.64.131:9000   
步骤5:-hdfs-site.xml hdfs-site.xml文件包含本地文件系统的复制数据值、名称节点路径和数据节点路径等信息。它指的是您想要存储Hadoop infra的地方

<configuration>

<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/masternode/hadoopinfra/hdfs/namenode </value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/masternode/hadoopinfra/hdfs/datanode </value >
</property>

</configuration>

dfs.replication
1.
dfs.name.dir
file:///home/masternode/hadoopinfra/hdfs/namenode 
dfs.data.dir
file:///home/masternode/hadoopinfra/hdfs/datanode 
步骤6:-warn-site.xml 此文件用于将纱线配置为Hadoop。打开warn-site.xml文件,并在此文件中的、标记之间添加以下属性

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

</configuration>

纱线.节点管理器.辅助服务
mapreduce_shuffle
步骤7:-mapred-site.xml 此文件用于指定我们使用的MapReduce框架。默认情况下,Hadoop包含一个Thread-site.xml模板。首先,需要使用以下命令将文件从mapred-site xml.template复制到mapred-site.xml文件。 $cpmapred-site.xml.template mapred-site.xml 打开mapred-site.xml文件,并在此文件中的、标记之间添加以下属性

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

</configuration>

mapreduce.framework.name
纱线
步骤8:-验证Hadoop安装 以下步骤用于验证Hadoop安装

start-all.sh
jps正如@Amadan所解释的,这个问题是XML语法问题。仔细检查你的核心站点.xml
对于我的例子,我得到这个错误是因为我在文件中声明了两次,

拥有多个根(epilog中的start标记?)仍然是非法的。在[行、列、系统id]:[26,2,“文件:/usr/local/hadoop/etc/hadoop/hdfs site.xml]处出错。
hdfs site.xml
core site.xml
是不同的文件。这个问题已经解决了。现在您知道了错误的含义,以类似的方式修复另一个文件应该很容易-通过阅读文档发现根标记应该是什么,并应用它。谢谢,但是jps没有任何结果。。。。我的安装信息如下。