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 ,这是一个疑问有待后续发现。。