• 基于树莓派的Hadoop集群搭建


    此为突发奇想写的,还没更新完成,里面有的内容出入还没更改,图片明天再加,内容再改。

    由于本人需求,所以在四个树莓派上搭建了一个极小的Hadoop集群,请勿喷我的工作无用,都说了是我需要才这样做的,手动再见!
    工作并非完全个人创造,在基于网上貌似唯一一篇介绍树莓派搭建Hadoop集群的过程文章后根据个人现状进行修改完成,原本已有人搭建过相应内容,所以树莓派系统内部混乱,后来也没有完全清理,有些易于常人的错误表示摸索很久才得以解决,总之,没有得到就有学到!

    具体搭建过程参考,过程详细,从理论上来说没有问题。感谢博主干货!
    具体选择版本内容如下:

    名称

    参数

    JDK

    (硬浮点版本)

    Eclipse

    Hadoop

    一、:改变host
    pi@slave2 ~ $ su root
    Password:
    root@slave2:/home/pi# vim /etc/hosts

    以上后来全部追加一个127.0.0.1 localhost以方便后面进行测试

    二:建立hadoop运行帐号
    即为hadoop集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:
    sudo groupadd hadoop //设置hadoop用户组
    后来改变用户的权限为:
    usermod -d /home/hduser -g hadoop -G root hduser

    其中各选项含义如下:
    -c comment 指定一段注释性描述。
    -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    -g 用户组 指定用户所属的用户组。
    -G 用户组,用户组 指定用户所属的附加组。
    -s Shell文件 指定用户的登录Shell。
    -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
    用户名 指定新账号的登录名。上述3个虚机结点均需要进行以上步骤来完成hadoop运行帐号的建立。

    三:配置免密码登录的SSH
    三个都要配置,先是在slave2上配置讲解(是在hduser用户下)
    1、 生成dsa类的密码公钥和私钥
    命令:ssh-keygen –t dsa –P ''
    默认目录在Hduser主目录下的.ssh/目录中(完全目录是:/home/hduser/.ssh),可以查看内容。

    2、id_rsa.pub为公钥,id_rsa为私钥,紧接着将公钥文件复制成authorized_keys文件,这个步骤是必须的,过程如下:
    命令:cat id_rsa.pub >> authorized_keys

    本来我是使用的dsa,后来在将Hadoop集群链接到WIN7下的Eclipse中时经常出现连接错误,各个节点不可联通,需要密码,为了方便,没有深入的研究,将无密登录改换成默认的rsa后,世界就美丽了!

    3、在slave2上进行回环测试
    命令:ssh localhost

    4、在hduser用户下使用命令从master远端获取master的id_dsa.pub公钥
    命令:scp hduser@master:~/.ssh/id_dsa.pub ./master_dsa.pub

    需要输一次密码

    5、slave2中公钥文件必须包含master的公钥,所以将传输所得的master公钥,加入到authorized_key中
    命令:cat master_rsa.pub >> authorized_keys

    6、如上过程显示了slave2结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,这一过程需要密码验证。接着,将master结点的公钥文件追加至authorized_keys文件中,通过这步操作,如果不出问题,master结点就可以通过ssh远程免密码连接slave2结点了,下面在master上面进行验证
    命令(master上):ssh slave2

    7、由上述步骤可知,slave2结点首次连接时需要,“YES”确认连接,这意味着master结点连接slave2结点时需要人工询问,无法自动连接,输入yes后成功接入,紧接着注销退出至master结点。要实现ssh免密码连接至其它结点,还差一步,只需要再执行一遍ssh slave2,如果没有要求你输入”yes”,就算成功了。

    三:配置hadoop

    安装hadoop。在hduser的主目录下创建新的文件夹hadoop,然后将hadoop-1.2.1.tar.gz放在其中,然后解压到该目录下面
    进入/etc/profile中更改hadoop的环境变量,在文本末尾追加:

    # set java environment
    export JAVA_HOME=/usr/java/jdk1.8.0_33
    export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    # set hadoop path
    export HADOOP_HOME=/home/hduser/hadoop/hadoop-1.2.1
    export PATH=$PATH:$HADOOP_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1:在hduser主目录下创建一个新的文件夹hadoop_tmp
    其实可以默认放置于Hadoop本身的tmp文件夹中,看个人,但是这个文件夹的位置至关重要
    命令(master):mkdir /home/hduser/Hadoop_tmp

    2:进入root权限下在hadoop安装的文件夹里面进行配置,用root用户进入/usr/hadoop/conf文件夹,打开hadoop-env.sh文件:
    在文件尾部添加如下内容:

    # set java environment
    export JAVA_HOME=/usr/java/jdk1.8.0_33
    
    • 1
    • 2

    JAVA_HOME后面的路径是jdk的安装路径。

    3:修改另一个文件,core-site.xml文件
    命令:root@master:/usr/hadoop/conf# vim core-site.xml
    修改的内容如下:

    
    
    
    
    
    
      
         hadoop.tmp.dir
         /home/hduser/hadoop_tmp
         A base for other temporary directories.
      
      
         fs.default.name
         hdfs://master:9000
         true
      
    
    ~                                                                                                                                                                                                  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4:配置hdfs-site.xml文件
    命令:root@master:/usr/hadoop/conf# vim hdfs-site.xml
    修改内容如下:

    
    
    
    
    
    
        
            dfs.name.dir
            /home/hduser/hdfs/name
            Determines where on the local filesystem the DFS name node should store the name table. If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.  
        
    
       
            dfs.data.dir
            /home/hduser/hdfs/data
            Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored. 
       
    
      
            dfs.replication
             2
      
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    5:配置mapred-site.xml文件
    打开mapred-site.xml文件:vim mapred-site.xml
    修改内容如下:

    
    
    
    
    
    
      
            mapred.job.tracker
            master:9001
      
    
    ~                                                                                           
    ~                                                                                           
    ~                                                                                           
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    6:配置masters文件
    打开masters文件:vim masters
    命令:root@master:/usr/hadoop/conf# vim masters

    7:配置slaves文件
    命令:root@master:/usr/hadoop/conf# vim slaves

    8:现在在Master机器上的Hadoop配置就结束了,剩下的就是配置Slave机器上的Hadoop。是将 Master上配置好的hadoop所在文件夹”/usr/hadoop”复制到所有的Slave的”/usr”目录下(实际上Slave机器上的slavers文件是不必要的, 复制了也没问题)。用下面命令格式进行。此时hduser是没有操作/usr目录下的文件的权利,所以都用root权限进行操作呀
    scp -r /usr/hadoop root@slave1:/usr
    root@master:/usr# scp -r /usr/hadoop root@slave2:/usr
    Slave2中的/usr的列表,表示传输成功。
    改变hadoop文件的所有者
    root@master:/usr# chown -R hduser:hadoop Hadoop
    root@slave1:/usr# chown -R hduser:hadoop Hadoop
    root@slave2:/usr# chown -R hduser:hadoop Hadoop

    接着在slave上修改”/etc/profile”文件(配置 java 环境变量的文件),将以下语句添加到末尾,并使其有效(source /etc/profile):

    # set hadoop environment
    export HADOOP_HOME=/usr/hadoop
    export PATH=$PATH :$HADOOP_HOME/bin
    
    • 1
    • 2
    • 3

    四:格式化master
    1:格式化hdfs文件系统
    在master上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh):
    hduser@master ~ $ hadoop namenode –formate
    2:启动hadoop

    !!!!!!!!!!!!!!!!!!!很重要的帮我解决了一定问题的文章。好人一生平安!!!!
    http://chenzhou123520.iteye.com/blog/1826002
    !!!!!!!!!!!!!!!!!再次出现错误,原因是没有修改好ID
    http://blog.sina.com.cn/s/blog_4c248c5801014nd1.html
    再次感谢一篇神一样的文章给予的支持:(就是没有改变为-client的模式,但是有个问题,slave1也并没有改变client的模式,也是可以用的,)
    http://www.lediouris.net/RaspberryPI/Hadoop/readme.html

    我测试mapreduce的时候用wordcount这种小的程序的时候,输出文件夹一定是不可以存在的,就是输出的路径要写一个不存在的而文件路径,让它自己去创建,就是这么烦人,我草了~~~~~~~

    export HADOOP_HOME_WARN_SUPPRESS=1
    具体目录请更改为安装目录,HADOOP_HOME_WARN_SUPPRESS变量为抑制HADOOP_HOME变量重复时的告警。

    Administrator

    http://www.cnblogs.com/shitouer/archive/2012/05/29/2522860.html
    这个是配置win7下面的hadoop还只实验中,但是基本是没什么问题的
    http://my.oschina.net/u/999578/blog/180343
    这个链接也是看了一下的

  • 相关阅读:
    如何阅读芯片手册
    无线互动会议室方案的视频显示系统
    layui中checkbox使用lay-skin=“switch“ 过滤事件赋值与取值
    HTML+CSS+JavaScript 大学生网页设计制作作业实例代码 200套静态响应式前端网页模板(全网最全,建议收藏)
    Pandas数据分析一览-短期内快速学会数据分析指南(文末送书)
    计算机网络的形成与发展
    MCE | 免疫检查点大组团
    SLAM从入门到精通(从amcl到navigation软件栈)
    使用Jenkins + docker打包部署后端服务
    django学习之路(1)-初识 Django
  • 原文地址:https://blog.csdn.net/web13524385009/article/details/126565584