记录初学hadoop三天来趟的坑(与linux的网络、权限和硬盘容量有关)

记初学hadoop各种环境问题的趟坑(linux网络,免密登录和扩容)

背景

学习hadoop的教程不必说,随便找一找博客或者上官网上找get started,很快就将hadoop和jdk装配在我的虚拟机上,我用的虚拟机为vmware,装配4台机器,其中一台(128)留作单机使用,另外三台(129,130,131)作为小集群学习使用。

网络问题

我碰到的第一个坑就是网络问题。
hadoop初装好和配置后,我就迫不及待地去熟悉几个hdfs,yarn命令,在单机下毫无问题,接下来是启动小集群,在129-131三台机器上搭好环境,按教程在128机器上作了分发脚本。
首先就是一些网络的更改,主机名和静态ip什么的,然后就碰到了这个错误:
没有找到合适的设备:没有找到可用于链接System eth0 的设备
然后找了若干博客,一番周折后,最后借助这篇文章得以解决:
https://blog.csdn.net/hanghang121/article/details/54584885
简单说下解决办法,正常情况下ifconfig你的ipv4如果出现在一个叫eth1的网卡中就不正常了,我的貌似是因为三台机器都是克隆来的才导致此问题。在/etc/sysconfig/network-scripts/ifcfg-eth0中,你的网卡地址与/etc/udev/rules.d/70-persistent-net.rules记录的etho项不一样,所以会生成一个eth1,所以要更改 /etc/udev/rules.d/70-persistent-net.rules,将eth0项去除,按照博文所说,将eth1改为eth0,并将mac地址复制到方才的rules文件中替换掉HWADDR。
更多内容参考引用博客,感谢博主的劳动。

权限问题

现在很多hadoop集群的教程都会提供一小段的同步脚本,比如我所抄用的教程,就是在128机器上更改文件,然后统一分发到129-131,这一步不会有任何问题,但是启动129-131三台机器的集群时,即使用sbin/start-dfs.sh时,遇到一个极大的坑,而且根本无法直接百度到解决办法。
这个坑就是:控制台卡在某一步,这一步往往是启动某一个slaves上的datanode,而且永远不会向下进行,如果手动按ctrl c结束,它会自动向下进行,并且你可以在某些log上看到permission denied。因此我猜测是权限或防火墙的问题。
另外,在日志上可以看到带有某些机器标识的log,比如我的案例中,131中成功启动了secondary namenode。可以用jps查看都启动成功了哪些。
这个问题本质上是权限问题,解决办法有多步:
第一个是更改的配置文件,如hdfs-site.xml,hadoop-core.xml,mapred-site.xml,yarn-site.xml等,如果你集群中不是使用root账号,那么需要将三台slave的hadoop及目录下所有文件chown为该账号。
第二个是.ssh的权限,如果发现启动hdfs集群需要输入本机或其他机器密码(ssh),那么需要把.ssh文件夹改为700权限,里面的authorized_keys改为600权限。
参照:
https://blog.csdn.net/u013992330/article/details/79728286
https://blog.csdn.net/qq_31382921/article/details/77983955
当然,别忘了排去防火墙问题。

硬盘扩容问题

这是一个我最蛋疼的问题,足足耗了我两个小时。我写这个博文就是引用几位当时找起来非常困难的文章,毕竟对于很多新人包括来说,把一个问题从头到尾专业化地描述是件极难的问题,所以搜索答案十分困难,这篇博文估计也不会有几人看,重点也算是个人的一个小备忘,而坚定我写下这段备忘的最大原因就是扩容的事一波三折。
前面的网卡只有eth1没有0导致无法重启网络、还有集群启动时因权限问题造成卡在某台机器启动卡死的暗坑,我都很快猜出了原因,并找寻相应博文解决,所以一开始没有想记录这篇博客,而且因为终端已重启,没有了前面两大问题的截图。估计很多人也看不下去,下面详述一下硬盘扩容的事。
今天,我终于成功地单机或集群启动了hdfs,yarn,并能上传和下载文件。
于是又去找一些编程的博客,抄写了一些简单的文件上传程序,使用单机模式,在调整了有关配置之后,遇见这么一个异常:
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create file/user/hadoop/jedis.chm. Name node is in safe mode.
Resources are low on NN. Please add or free up more resources then turn off safe mode manually. NOTE: If you turn off safe mode before adding resources, the NN will immediately return to safe mode. Use “hdfs dfsadmin -safemode leave” to turn safe mode off.
简单读一下就是没地方了,所以进入了一个安全模式,所以必须先清一些资源然后再关掉安全模式,而且还给出出关闭安全模式的命令。
在使用vmware图形化界面给硬盘扩了10G容量后(这部分略),我主要参考了一篇博文:
https://blog.csdn.net/qq_27792379/article/details/51479224
主要的过程是一致的,但是我用的是centos,作者使用的是ubuntu,因此我步骤略有不同。
首先是安装gparted本身就一波三折,参考这篇博文安装gparted:
https://blog.csdn.net/Touatou/article/details/79956017
然后是gparted的git仓库,那个地址已经不能访问了,不过还好,在github上还有,所以我到github上下载了。
接下来,运行./autorun时报错,缺少一个libtool,还好又是一个yum install libtool解决了。接下来几部终于成功,我可以在本机启动gparted友好的分区界面了。
然并卵,界面大概是这个样子(因为我已经分好了区,但不影响大家想象当时的样子)
gparted不可以点击调整大小按钮

这个上面,选中了真正缺空间的分区(我做这里时对于分区和硬盘、组等概念是没有的),根本无法点击前面引用的博客中说的调整大小按钮,所以白忙活 了。
接下来,找各种centos下调整硬盘大小,增加硬盘大小,后来试着试着找着找着,大概理解了分区的问题。
df -h,fdisk -l,lsblk等命令试过后,慢慢知道了,我要调整的是/dev/sda2下面的一个“分区”的大小(事实解决问题之后再lsblk发现我根本没有增加分区大小,而是给一个逻辑卷增加了一个新分区,后面上图,糊里糊涂地解决的问题)。而最终找到的这篇博客既解了惑,也告诉了详细的解决方式:http://blog.sina.com.cn/s/blog_497f74bc01011z55.html
简单来说,就是作者原话:因为经常第一次分配时,就将卷组的资源全部分配给了某个逻辑卷,所以无法直接扩容,要增加这个逻辑卷的大小,需要先增加卷组大小,要增加卷组大小却要增加物理卷大小,增加物理卷大小却要增加分区。此时我才大概回忆”分区“与”逻辑卷“这两个词。
按照文章中的步骤操作了,忽略一点小插曲,果然成功了,最后resize2fs这个逻辑卷,事后我又看了一下挂载情况:
扩容后的挂载情况

可以看到,我并没有把sda2扩大,或者把一开始我理解的sda2下面有一个”分区“(也许叫vg_stack-lv_root)扩大,而是把vg_stack这个逻辑组(vg_scan命令可以查看组)添加了一个分区,并对vg_stack-lv_root扩充了同样的容量。

简单作个总结:作为一个浅工龄程序员,大数据新手,所写博客实在不入眼,但也希望对同样趟坑的同行有所帮助,作者自己将来也需要这篇博文作为回忆。很显然,如果要自学大数据,还是需要不小的linux基础功底,很多教程作者的博文上是没有这些奇葩问题的,为了省事,最好建立虚拟机时就把硬盘设置大些,反正一般都是动态调整。以作者的浅薄经验,这两天碰到的有关问题全部是linux基础知识不足引起。
明天再试扩了容之后能否跑的通文件上传!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值