hadoop bug 笔记

1.sqoop从mysql导入数据到hdfs的时候,总是在本地运行,而没有运行在集群上

  sqoop  配置文件的问题

  在 /usr/lib/sqoop/conf 目录下新增文件 sqoop-env.sh 按照sqoop-env-template.sh模板配置 如下

 

et path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/wwx/hadoop/hadoop-2.6.0-cdh5.8.0

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/wwx/hadoop/hadoop-2.6.0-cdh5.8.0

由于默认的HADOOP_COMMON_HOME并不是 我运行集群 所在的目录,而是 /usr/lib/sqoop/bin/configure-sqoop 中所配置的目录 打开这个文件就可以看到

2.namenode重新format之后会导致namenode和datanode的版本不一致,再次启动datanode的时候会导致datanode启动不了

 应当尽量避免再次格式化,或者在格式化后删除原来的version文件,目录是在hdfs-site.xml文件中配置的dfs.datanode.data.dir属性

3.ssh免密码登录

本机免密码登录

执行ssh看ssh是否安装了,一般默认都安装了  

任意目录执行ssh-keygen -t rsa 生成公钥和私钥

一直enter,不设密码

cd ~/.ssh

cat id_rsa.pub >> authorized_keys

ssh localhost 看是否需要输入密码,如果要输入

则 修改文件权限

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

ssh localhost 则不需要输入密码

A机器免密码登录B机器

将A机器的公钥id_rsa.pub 追加到B机器的authorized_keys中

4.将用户添加到sudoer文件中

su root

visudo

找到 root ALL这一行,在这一行下面加上 自己的username  ALL=(ALL) NOPASSWD:ALL

5.修改锁屏时间

桌面左上角找到System-->Preferences-->Screensaver  将时间调整

6.关闭防火墙

1) 重启后生效 
开启: chkconfig iptables on
关闭: chkconfig iptables off

2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
7.给虚拟机设置静态ip

修改ip:
编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //设备名称,不要修改
BOOTPROTO=static //不要修改
BROADCAST=10.10.22.255 //广播地址,一般为本网段的最后一个IP
IPADDR=10.10.22.145 //ip地址
NETMASK=255.255.255.0 //子网掩码
NETWORK=10.10.22.0 //网段地址
HWADDR="00:0C:29:92:BF:74"//修改为当前网卡的mac地址
ONBOOT=yes //不要修改
TYPE=Ethernet //不要修改
注意: ifcfg-eth0是第一张网卡,ifcfg-eth1是第二张网卡,依次类推
克隆或复制的虚拟机,网卡mac地址就会增加一个,mac地址信息在/etc/udev/rules.d/70-persistent-net.rules
注意要把mac地址修改为当前有效的网卡
8.nodemanager启动不起来,并且错误信息为NodeManager from  hadoop-2 doesn't satisfy minimum allocations, Sending SHUTDOWN signal to the NodeManager貌似是因为在yarn-site.xml中

<property>
<description>Amount of physical memory, in MB, that can be allocated
for containers.</description>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>30720</value>
</property>

其中value<1024,选择把这个给注释掉之后可以启动

9.centos配置yum源

cd /etc/yum.repos.d/

新建一个repo源文件 sudo vi my-reponame.repo

以小象学院的cloudera repo源为例

添加以下内容

[cloudera-cdh5-myself]
name=Cloudera CDH, Version(Custom)
baseurl=http://112.74.102.117/software/cloudera-cdh5
gpgcheck=0

保存退出即可使用

10.mysql设置远程访问权限与远程访问

设置远程访问权限:

在启动了mysql的主机上执行mysql命令

允许任意主机访问:mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  #myuser是主机的用户名

允许特定主机访问:mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  #ip或者可识别的主机名都可

远程访问测试:

在另一台主机上执行 mysql -hhadoop-4 -u root -p #hadoop-4为本主机的主机名 root是mysql的登录账户名

然后输入密码

11.hive-server2启动出错,这个错误困扰了我好几天,最终解决了,必须得记录一下

错误的详细信息可以参照小象问答上面一个人的提问,是一模一样的错误 http://wenda.chinahadoop.cn/question/767

总结起来就是hive-server2 启动failed ,在/var/log/hive目录下查看日志发现说找不到HADOOP_HOME,也就是说hive找不到hadoop

但是已经在/usr/lib/hive/conf/hive-env.sh中配置了HADOOP_HOME  而且错误信息是在执行/usr/lib/hive/bin/hive这个脚本时打印的

所以去追查这个脚本 发现脚本中正确识别了HADOOP_HOME ,但是却没有权限去读取HADOOP_HOME/bin/hadoop这个脚本(认为它不存在,实际上是没有权限读取和执行)

所以得修改这个权限,让hive可以执行  从小象问答的帖子中发现是要让hive用户有权限 所以执行chmod 755 -R / (HADOOP_HOME=/home/wwx/hadoop/hadoop-2.6.0-cdh5.8.0)目的是让其他用户也有读取和执行的权限

操作之后果然有效果,但是却有新问题出现  在hive脚本中执行hadoop version时返回 又找不到java了  (JAVA_HOME not set) 之前hadoop都能运行,所以hadoop是肯定能找到java的,而且各种配置项也都配置了

最后思考是不是其他目录也有hadoop存在,结果在/usr/lib/中发现了hadoop目录 在/usr/lib/hadoop/etc/hadoop/hadoop-env.sh (文件新建的)中设置好JAVA_HOME

export JAVA_HOME=/home/wwx/jdk/jdk1.7.0_79

发现问题解决了

 

其实不太明白为什么hive会去读取这个目录的hadoop下的hadoop-env.sh 而不是配置的HADOOP_HOME目录下的hadoop-env.sh ,这是一个疑问有待后续发现。。

posted @ 2016-09-25 22:22  fisherinbox  阅读(365)  评论(0编辑  收藏  举报