我通关学习搭建hadoop节点集群时,遇到的各种问题有一个简短的总结。相信这会是很多跟我一样,刚刚接触或者学习hadoop的朋友们会在学习的过程中经常碰到的问题。希望一下的总结能够对大家的学习有所帮助。
以下所有的问题都会导致你的分布式系统报错或者进程缺失。
第一:在/hadoop-1.2.1/conf/文件下,进行分布式文件配置时,core-site.xml、hdfs-site.xml、mapred-site.xml格式一定要一一核对,确保正确。哪怕就是头文件的书写也一样。
解决办法:配置好master机器上的文件后,要检查一遍,一定要把不相关的空格删除,否则集群启动时会直接报错。你找都找不哪里出了问题。最好是头文件不要删除、把需要添加的内容复制进去就行了,这样可以减少犯错误。
第二:master机器和slave集群的进程不对
解决办法:确保每一台slave机器上的core-site.xml、hdfs-site.xml、mapred-site.xml都与master保持一致。最好是在master上配置结束后,确保正确的前提下:scp hadoop-1.2.1 hadoop@slave:/home/hadoop/,执行这条命令,把master上的hadoop文件全部拷贝到slave机器上去。
第三:master和slave上的IP设置绑定问题
解决办法:$:/etc/hosts的配置,确保每台机器上的masterIP和slaveIP一致。
第四:master、slave之间密钥登录问题
解决办法:master无密码登录slave机器时,前提是将自己的SSH配置时声称的master机器密钥id_rsa.pub分别复制到各台slave机上(建议:slave机最好新建一个authorized_keys),这样才可以无密码登录。同理,slave机登录master时,也要把各自的SSH配置时自动产生的id_rsa.pub拷贝到master机的authorized_keys中去。这样才可以实现他们之间的无密码登录。
第五:/etc/profile配置JAVA_HOME路径时的问题
注意:在配置JDK和HADOOP的JAVA_HOME路径时,一定要严格按照各自的配置路径进行,比如JDK在前,HADOOP在后,(JDK的文件路径、classpath的路径、path的路径,hadoop.jar的路径、path的路径)。千万不要觉得只要内容都一样,位置、顺序随意就可以。机器是逐条读取的,如果顺序不对,也会报错。这个如果不会,网上很多,可以参考的编写配置。