zoukankan      html  css  js  c++  java
  • hadoop(一)

    简书链接:https://www.jianshu.com/p/6684d20c88fd


     

    (一)SecureCRT 8.3小tips

    (二)hadoop安装,简单使用中碰到的坑

    SecureCRT 可以通过直接拖拽的方式上传文件,想想以前还特意下一个上传的软件(0.0)文件默认上传到/root目录下

     

    接着便记录下hadoop的安装。

    一开始选择1g内存的虚拟机,发现压根就运行不起来,4g的话电脑配置不够,因此选择2g。

    4台Linux服务器,1台作为NAMENode,3台作为DataNode。

    NameNode和DataNode

    什么是NameNode?我将它理解成是DataNode的管理者

     
    跪求好看的画图工具.jpg

    如图所示:

    第一步 1.本地磁盘或者客户端向NameNode请求存入一个文件,路径比如是/movie/a.avi,这路径是以后在hdfs中请求该视频时的请求路径

    第二步 2.NameNode向客户端响应,可以传输

    第三步 3.客户端请求传输文件a.avi,假设先存一份吧

    第四步 4.NameNode告诉客户端存到DataNode dn01中,并且分配一个全局的唯一的ID

    第五步 5.请求dn01,传输文件a.avi

    配置服务器

    a.

        1.获取四台主机的IP地址和hostname

        2.对每台主机都修改域名映射 /etc/hosts

        3.配置好jdk环境(ps:jdk版本需要1.8以上)

        4.关闭防火墙

        5.安装ssh工具

        6.四台主机时间同步

    b.

        上传hadoop安装包,可以通过上面的SecureCRT

    c.

        修改hadoop的配置文件,一开始只需修改两个 分别是 hadoop安装目录下的etc/hadoop/hdfs-site.xml 和 hadoop-env.sh

    hdfs-site.xml修改如下:

     
    hdfs-site.xml

    其中第一个property是NameNode的主机地址,第二个property是本机NameNode的hdpdata路径,第三个property是本机DataNode的hdpdata路径

    hadoop-env.sh脚本修改如下:

     
    hadoop-env.sh

    为什么不可以写成$JAVA_HOME形式?当请求其他主机时,可能两台主机的jdk安装目录是不一样的,会导致路径出错

    d.

        将hadoop文件夹复制给其他三台主机。可以通过scp来进行远程复制(ps:前段时间网易面试其中一个问题就是不同主机之间进行复制用什么命令)。

     

    apps/是本机需要被复制的文件夹

    chen04是需要复制过去的远程主机名

    /home/apps/ 是复制到chen04主机下的该目录

    遇见的坑:

     

    解决方法:

     

    启动hadoop

    第一次启动hadoop,要对其进行初始化,只需要在第一次启动时使用该命令

    进入bin目录,执行hadoop namenode -format

    会发现在/home目录下多了hdpdata,也就是在上面配置文件中配置的路径

     

    我这里是在/etc/profile中配置了hadoop的bin目录,所以可全局使用hadoop命令

    接着,进入sbin目录执行 ./hadoop-daemon.sh start namenode 。namenode成功启动,可以使用jps查看或者netstat -ntlp

    查看端口情况

    在datanode主机上进入sbin目录执行 ./hadoop-daemon.sh start datanode 。datanode成功启动,可以使用jps查看或者netstat -ntlp

    查看端口情况

    大坑

    中途尝试在腾讯云上安装hadoop,发现一直启动不成功,查看日志发现

     
    大坑.jpg

    在/etc/hosts中该主机名映射的ip是公网ip,而腾讯云是不允许绑定公网ip的,只能绑定内网ip,所以

     

    自我嘚瑟一波

    假设你NameNode的主机名为chen01,而且上述启动都是成功了的!咳咳 那么在浏览器中输入chen01:50070便可查看,包括启动了几个dataNode

    未来的你会感谢现在努力的你
  • 相关阅读:
    深入理解Java Proxy机制
    StringBuilder与StringBuffer的区别
    反射
    list和set区别
    spring总结
    Hibernate与 MyBatis的比较
    手机拍照或选择照片上传html5代码
    JSP两种跳转
    离散化
    圆方树
  • 原文地址:https://www.cnblogs.com/cjxblogs/p/9605073.html
Copyright © 2011-2022 走看看