搭建Hadoop+Hive+Mysql遇到的坑及解决办法

本文详细记录了在搭建Hadoop+Hive+Mysql集群过程中遇到的问题,包括SSH登陆环境变量失效、sudo权限设置、Hadoop启动失败等,并给出了具体的解决方法,如修改用户Shell、调整文件权限、检查配置文件等。
摘要由CSDN通过智能技术生成

1. 安装环境

    硬件:三台PC,配置 Intel i5 4 Core CPU, 16G memory,  2T 硬盘

    软件: 两台PC为ubuntu 14.04, 一台为ubuntu 16.04 ;    hadoop-2.8.0, hive-1.2.2, mysql 5.5.55, jdk-8u131-linux-x64.tgz (1.8.0_131)

    机器分配: 一台ubutn 14.04的主机作maste, 其他作slave

    登陆帐号:方便期间,三台机器上都创建用户名/密码为 hadoop/hadoop 的帐号

2.  各种问题及解决办法

2.1.  从master通过ssh登陆slave后,.bashrc中增加的环境变量没起作用, 直接在slave上 echo .bashrc中export的变量是正常的

问题原因: 创建hadoop帐号时,默认的shell 是/bin/sh 而不是/bin/bash ,导致ssh 登陆后根本不会执行.bashrc中的设置。

echo $SHELL 可查看当前的shell  或 vim /etc/passwd 查看用户hadoop的最后一个字段。

不同登陆方式执行的配置脚本不同,主要涉及login shell 和non-login shell 的区别,简单说区别如下,

 “login shell” 代表用户登入, 比如使用 “su -“ 命令,或者用 ssh 连接到某一个服务器上, 都会使用该用户默认 shell 启动 login shell 模式.
该模式下的 shell 会去自动执行 /etc/profile 和 ~/.profile 文件, 但不会执行任何的 bashrc 文件, 所以一般在 /etc/profile 或者 ~/.profile 里我们会手动去 source bashrc 文件, 或把.bashrc中的内容放在.profile中;
而 no-login shell 的情况是我们在终端下直接输入 bash 或者 bash -c “CMD” 来启动的 shell.该模式下是不会自动去运行任何的profile文件.

解决办法:原因知道了,解决就容易了。

a.  修改 hadoop 用户的shell为/bin/bash;    ///  创建时设置 如,useradd -m -g hadoop hadoop -s /bin/bash ,或 sudo vim /etc/passwd 中修改,或  chsh

b.  .bashrc中的声明语句放在.profile中或在.profile增加.bashrc的调用, 后者更方便,同时满足两种登陆方式。

    # include .bashrc if it exists  
    if [ -f "$HOME/.bashrc" ]; then  
        . "$HOME/.bashrc"  
    fi  

补充: 两种登陆方式的更多区别,见   https://wido.me/sunteya/understand-bashrc-and-profile/


2.2  帐号hadoop 没有执行sudo 的权限

解决办法:  修改//etc/sudoers 的400权限为640后或 sudo chmod u+w /etc/sudoers后,sudo vim /etc/sudoers 增加    hadoop  ALL=(ALL:ALL)  ALL

或使用系统提供的工具修改,避免发生意外: sudo visudo /etc/sudoers 后增加上面hadoop 一行

注意: 安全期间,这个文件的权限是400即任何人是只读的,修改前不能随便该为775等大权限的,否则连sudo 都不能执行,一定要谨慎。


2.3  sudo 失效

修改/etc/sudoers文件权限过大后like 775 ,再执行sudo命令会报如下错误,sudo 失效。

     sudo echo $PATH
     sudo: /etc/sudoers is world writable  
     sudo: no valid sudoers sources found, quitting  
     sudo: una

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值