设为首页 收藏本站
查看: 1083|回复: 0

[经验分享] hadoop搭建进阶,多台机器分布式搭建

[复制链接]
累计签到:4 天
连续签到:1 天
发表于 2016-12-8 11:18:24 | 显示全部楼层 |阅读模式
      阅读此篇文章之前,请阅读上一篇:http://jiajun.iyunv.com/blog/622475
  Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架,借助于 Hadoop, 程序员可以轻松地编写
分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。在本文中,详细介绍了如何部署 Hadoop 分布式
运行环境。

一、前言

    前面己经详细介绍了如何安装 Hadoop,如何在单机及伪分布式环境 (在一台单机中用多进程模拟) 运行基于Hadoop 的并行程序。本文将介绍真实的 Hadoop 分布式运行环境, 如何在多台普通的计算机上部署分布式运行环境。

二、准备硬件设备、操作系统、网络环境

    准备三台机器,机器名分别为 home0.hadoop、home1.hadoop、home2.hadoop,均安装 CentOS5 (其它 Linux 发行版亦可), 确保各台机器之间网络畅通,机器名与 IP 地址之间解析正确,从任一台机器都可以 ping 通其它机器的机器名。如有机器名的解析问题,可通过设置 /etc/hosts 文件解决,当然更好的解决方法是在你的网络中配置 DNS 服务器。此外,需要在三台机器上创建相同的用户帐号,如:yourusername。

    我们将使用 home0.hadoop 作为分布式文件系统 HDFS 的 Name Node 及 MapReduce 运行过程中的 Job Tracker 结点,我们将 home0.hadoop 称之为主结点。其它两台机器 (home1.hadoop, home2.hadoop) 作为 HDFS 的 Data Node 以及 MapReduce 运行过程中的 Task Tracker 结点,这些结点可统称为从结点。如你需要部署更多的机器,也是很容易的,将新加入的机器作为 Data Node 以及 Task Tracker 结点即可,其配置过程在您看完本文后就会了。

三、SSH配置RSA认证

    在 Hadoop 分布式环境中,Name Node (主节点) 需要通过 SSH 来启动和停止 Data Node (从结点)上的各类进程
。我们需要保证环境中的各台机器均可以通过 SSH 登录访问,并且 Name Node 用 SSH 登录 Data Node 时,不需要
输入密码,这样 Name Node 才能在后台自如地控制其它结点。可以将各台机器上的 SSH 配置为使用无密码公钥认证方式来实现,在此我就不再赘述了,上篇已经写过。

四、安装部署 Hadoop

   1、我们首先在主控结点 home0.hadoop 上安装和配置好 Hadoop,安装过程上一篇已经说过,请查看。

  2、配置 conf/core-site.xml、conf/hdfs-site.xml、conf/mapred-site.xml

   2.1、conf/core-site.xml:
    <configuration>

        <property>
                <name>fs.default.name</name>
                <value>hdfs://home0.hadoop:9000</value>
        </property>

    </configuration>

  2.2、conf/hdfs-site.xml

    <configuration>

        <property>
                <name>dfs.name.dir</name>
                <value>/home/yourusername/hadoopfs/name_0,/home/yourusername/hadoopfs/name_1</value>
                 <description>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.
                </description>
        </property>

        <property>
                <name>dfs.data.dir</name>
                <value>/home/yourusername/hadoopfs/data_0,/home/yourusername/hadoopfs/data_1</value>
                <description>
                        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.
                </description>
        </property>

    </configuration>

  2.3、conf/mapred-site.xml

     <configuration>
         <property>
                <name>mapred.job.tracker</name>
                <value>home0.hadoop:9001</value>
        </property>

    </configuration>

   3、解释:
  参数 fs.default.name 指定 Name Node 的 IP 地址和端口号,此处我们将其设定为 home0.hadoop 及 9000 端口,参数 mapred.job.tracker 指定 JobTracker 的 IP 地址和端口号,此处我们将其设定为 home0.hadoop 及 9001
端口。 参数 dfs.name.dir 指定 Name Node 相关数据在本地文件系统上的存放位置, 此处我们将其设定为/home/yourusername/hadoopfs/name_0,/home/yourusername/hadoopfs/name_1 ,参数 dfs.data.dir 指定 Data Node 相关数据在本地文件系统上的存放位置,此处我们将其设定为 /home/yourusername/hadoopfs/data_0,/home/yourusername/hadoopfs/data_1 。注意, Hadoop 会自动创建这些目录,无需事先创建。如果你有多个磁盘设备,以逗号分开配置进去,会大大提高IO效率。

4、设定主从节点

    修改 conf/masters 文件,将其中的 localhost 改为 home0.hadoop ,修改 conf/slaves 文件。 删掉其中的localhost, 将我们的另两台机器 home1.hadoop、home2.hadoop 加入, 注意每个机器一行。masters里面的是主机节点,slaves里面是从机节点。

5、同样的配置拷贝到其他两台机器上去

    $ scp -r /home/yourusername/hadoop-0.20.2 home1.hadoop:/home/yourusername/hadoop-0.20.2
    $ scp -r /home/yourusername/hadoop-0.20.2 home2.hadoop:/home/yourusername/hadoop-0.20.2

    注意:可能您每台机器的JAVA安装位置不一样,记得修改conf/hadoop-env.sh,设置export JAVA_HOME=正确路径。

   6、在 home0.hadoop 上格式化一个新的分布式文件系统

    $ cd hadoop-0.20.2
    $ bin/hadoop namenode -format

   7、启动hadoop进程

    $ bin/start-all.sh

    $ bin/start-all.sh

starting namenode, logging to ...
home1.hadoop: starting datanode, logging to  ...
home2.hadoop: starting datanode, logging to  ...
home0.hadoop: starting secondarynamenode, logging to  ...
starting jobtracker, logging to  ...
home1.hadoop: starting tasktracker, logging to  ...
home2.hadoop: starting tasktracker, logging to  ...

    启动完成之后,从日志中可以看到,也可以运行 ps -ef 命令可以看到 home0.hadoop 上启动了 3 个新的 java进程 (namenode, secondary namenode, jobtracker), 同时,我们可以到 home1.hadoop、home2.hadoop 两台机器上用 ps –ef 查看,这两台机器上应该已经自动启动了 2 个新的 java 进程 (datanode, tasktracker)

五、操作HDFS试试

    $ bin/hadoop fs -lsr //查看分布式系统中是有哪些文件存在

    $ bin/hadoop fs -put /home/yourusername/hadoop-0.20.2/hadoop-0.20.2-tools.jar a.jar //从本地拷贝文件

    $ bin/hadoop fs -put /home/yourusername/hadoop-0.20.2/ . //从本地文件系统拷贝文件夹到分布式文件系统
   
    $ bin/hadoop fs -rmr /home/yourusername/hadoop-0.20.2/ . //删除分布式文件系统的所有文件

六、可能你不会很顺利

   我的问题呢,就是碰到 could only be replicated to 0 nodes, instead of 1,因为防火墙问题,在这里解决的:http://jiajun.iyunv.com/blog/624449。

七、多熟悉熟悉

1、http://home0.hadoop:50070看看分布式文件系统概况日志

Cluster Summary
15 files and directories, 3 blocks = 18 total. Heap Size is 10.73 MB / 966.69 MB (1%)
Configured Capacity    :    56.26 GB
DFS Used    :    524 KB
Non DFS Used    :    10.86 GB
DFS Remaining    :    45.4 GB
DFS Used%    :    0 %
DFS Remaining%    :    80.7 %
Live Nodes     :    2
Dead Nodes     :    0

2、http://192.168.0.129:50030看看工作情况

Cluster Summary (Heap Size is 7.5 MB/966.69 MB)
Maps    Reduces    Total Submissions    Nodes    Map Task Capacity    Reduce Task Capacity    Avg.

Tasks/Node    Blacklisted Nodes
0    0    0    2    4    4    4.00    0

3、熟悉hadoop的命令

八、环境搭建完成,到这里你可以玩玩分布式文件系统,下一步我会介绍如何分布式编程

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-311462-1-1.html 上篇帖子: 一起研究hadoop(一):hadoop的伪分布式安装配置 下篇帖子: 大数据框架hadoop的文件系统(HDFS)命令大全
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表