遇到的问题

1.主namenode无法启动其他节点上的进程

当namenode执行start-all.sh时,无法启动其他节点上的进程,原因是几个节点的用户名、文件路径不一致

解决方案

复制虚拟机,统一所有节点的文件路径、用户名

2.能启动zookeeper进程但状态出错

查看zookeeper状态时,显示"it's probably not running"

解决方案

更改hadoop配置文件core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://ns</value>
    <!-- 原先是 hdfs://cMaster:9000 -->
</property>

3.无法远程连接hive(impersonate user)

Error: Failed to open new session:

java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException):

User: lax is not allowed to impersonate root

由Hadoop2中的用户权限认证导致的

官方文档

If more lax security is preferred, the wildcard value * may be used to allow impersonation from any host or of any user. For example, by specifying as below in core-site.xml, user named oozie accessing from any host can impersonate any user belonging to any group.

解决方案

修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项

设置 hadoop的代理用户,lyx是启动HiveServer2的用户

<property> 
    <name>hadoop.proxyuser.lyx.hosts</name> 
    <value>*</value>
</property> 
<property> 
    <name>hadoop.proxyuser.lyx.groups</name> 
    <value>*</value>
</property>

使用超级用户hadoop刷新配置(直接关闭并重启hadoop集群也可以):

yarn rmadmin -refreshSuperUserGroupsConfiguration

hdfs dfsadmin -refreshSuperUserGroupsConfiguration

注意

如果是对namenode做过HA,则需要在主备namenode上执行(其中ns是自己设置的NamenodeServiceID):

hdfs dfsadmin -fs hdfs://ns -refreshSuperUserGroupsConfiguration

4.zkfc启动不成功

启动zkfc后,jps看不到ZKFailoverController进程,或是有两个standby的namenode,只能手动使namenode变成active状态

解决方案

在core-site.xml中增加以下配置

<!-- 配置隔离机制 -->
    <property>
        <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制占用一行-->
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
            shell(/bin/true)
        </value>
    </property>
    <property>
        <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/admin1/.ssh/id_rsa</value>
    </property>

results matching ""

    No results matching ""