• Hadoop 分布式部署


    Hadoop 分布式部署 - Coding岸 - 博客园

    Hadoop 分布式部署

         开始着手学习hadoop了,撇开对hadoop的认识,面对的第一个问题幷是hadoop的分布式部署,网上有很多教程,按照这些教程来却或多或少有些不顺利的地方。在此详细的记录下自己的安装过程。

         服务器操作系统是CentOS6,部署的hadoop版本是0.20.2,共十台服务器,node1~node10。其中node1做为NameNode,node10作为SecondNameNode,node2~node9作为DataNode。

         由于之前没有怎么接触过linux操作系统,刚开始安装的过程中遇到了很多现在看来很简单,当时却困扰自己很久的问题。

         1,安装hadoop前,需要安装java,java版本得是1.6.以上的,还需要安装ssh。

         java安装完后,在~/.bash_profile中添加JAVA_HOME,PATH,CLASS_PATH. 注意PATH变量中,多个值之间用的是":"冒号。

         2,配置SSH,NameNode启动其他服务器上的进程免去登陆这一环节。在配置ssh前,先为hadoop系统创建用户。每个节点上都要做同样的操作。

    1 groupadd hadoopcluster
    2 useradd -g hadoopcluster hadoop
    3 passwd hadoop //创建密码

         创建hadoop用户后,切换到hadoop用户来,在~目录下创建文件夹

    1 mkdir .ssh

        随后开始配置ssh免登陆:注意,这个操作只在NameNode上操作。

    1 ssh-keygen -t rsa //  接下来一路回车,则ok
    2 cp id_rsa.pub authorized_keys //进入.ssh目录

        接下来,并将生成的authorized_keys拷贝到所有其他节点下去。注意:node2为hostname,可以改为该节点的IP地址,为了以后方便,在/etc/hosts里面增加各个节点的ip地址和hostname。如增加一行:192.168.1.12 node2

    1 scp authorized_keys node2:/home/hadoop/.ssh

         在scp过程中会需要你输入密码,输入这一次以后再也不用输入了,这样ssh的无密码登陆就完成了。拷贝完成后,要修改authorized_keys文件的权限:

    1 chmod 644 authorized_keys//在root权限下操作

        3,开始部署hadoop,在NameNode 节点上,使用Hadoop用户,解压hadoop的文件夹,由于服务器上不了网,只能先下载下来,再通过xftp将hadoop的文件上传到服务器上去。

        解压之后,进入conf目录。主要配置core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml masters slaves 五个文件。

        在hadoop-env.sh 文件中:主要添加java环境变量

    1 export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64

        在core-site.xml文件中:

    1    <property>
    2      <name>hadoop.tmp.dir</name>
    3      <value>/opt/hadoop/tmp</value>
    4    </property>
    5    <property>
    6      <name>fs.default.name</name>
    7      <value>hdfs://node1:54310</value>
    8    </property>

         在hdfs-site.xml文件中:

     1    <property>
     2       <name>dfs.replication</name>
     3       <value>3</value>
     4    </property>
     5    <property>
     6       <name>dfs.name.dir</name>
     7       <value>/opt/hadoop/hdfs/name</value>
     8    </property>
     9    <property>
    10       <name>dfs.data.dir</name>
    11       <value>/opt/hadoop/hdfs/data</value>
    12    </property>
    13    <property>
    14       <name>dfs.namenode.secondary.http-address</name>
    15       <value>node10:50090</value>
    16    </property>

         在mapred-site.xml 文件中:

    1   <property>
    2      <name>mapred.job.tracker</name>
    3      <value>node1:54311</value>
    4   </property>

         在slaves文件中,则添加DataNode节点的ip地址,一行一个如:192.168.1.1

         在masters文件中,要注意,这个文件中添加的地址是指SecondNameNode的ip地址,配一个则一个SecondNameNode,多个则多个这样的节点。

         这些配置完毕后,则,需要将hadoop的bin加入到环境变量中,在~/.bash_profile中添加类似于JAVA_HOME,PATH一样的变量,HADOOP_HOME 和 PATH。将这些配置好后,便将所有的hadoop文件scp到所有的其他节点上去,类似于之前scp authorized_keys 一样。

         这样hadoop集群的简单配置基本上就完成了,随后的便是开始启动整个集群,看自己的辛勤劳动有个什么神奇的结果。

        4,开始见证奇迹的发生了。

    1 ./hadoop namenode -format //在hadoop bin目录下的操作,将数据节点格式化,如果顺利,会有一句successful的话
    2 ./start-all.sh //则所有节点都启动了。

        如果启动正常,则可以在浏览器中输入node1(ip地址):50070里面看到整个集群的相关信息。

        注意在整个过程中,只从一个角度提到hadoop部署的,namenode和DataNode,其实在start-all之后,会发现打印出来的信息还有tasktracker,jobtracker,这样的字眼,他们是相对于mapreduce来说的。

         由于在初次部署hadoop系统,还是出现了一些问题,在开始没有配置hosts文件时,系统在最后的一次start-all后,所有的数据节点就在打印同一条日志,结果很快就将300g的硬盘写满了。再次启动就是提示没有空间可以写了。

    1 2012-02-21 00:00:01,074 ERROR org.apache.hadoop.mapred.TaskTracker: 
          Caught exception: java.net.UnknownHostException: unknown host: node1

        这是由于DataNode没有配置hosts文件,无法将node1映射到相应的ip地址。

        在配置hadoop过程中,也是自己第一次这么正式的接触linux系统,所以遇到了很多各种各样的问题,譬如总是搞错root用户和hadoop用户,在不同用户下创建的文件不同用户对他拥有的权限不一样,如果总是root用户创建,则hadoop用户没权限操作。

        在配置path时,将两个参数中写成了";"分号,则在切换到hadoop用户时,总会出现一句~bash这样的语句,切换用户,系统总会执行bash_profile文件中指明的环境变量,到分号后就以为结束了,后面的语句则识别错误了。

        在配置hadoop系统过程中,最好先操作官方的文档来,系统运行中出现问题,则多查看日志。多自己思考,总会解决问题的,这样也更多对问题有深入的了解,下次遇到了便立马知道错在什么地方,怎么解决了。

        天道酬勤。

  • 相关阅读:
    感觉这周的每日都是累
    昨天是弄了一下这个把国境点以外的航路截断
    现在硬盘有点运行不快了,想换个硬盘
    昨天晚上本来想早睡的,可是彭突然有工作上的问题然后我就一直在远程
    昨天晚上接到知本时代电话较为多,前面还好是从10点开始
    python 绘制折线图
    Numpy中Meshgrid函数介绍及2种应用场景 (转)
    np.around() Numpy 数组,DataFrame 四舍五入的利器
    Numpy 数据的元素级逻辑运算 np.logical_and、np.logical_or、np.logical_not
    Numpy 中的 ravel() 和 flatten()
  • 原文地址:https://www.cnblogs.com/lexus/p/2389992.html
Copyright © 2020-2023  润新知