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

[经验分享] Linux下,Hadoop环境的安装配置

[复制链接]

尚未签到

发表于 2015-7-13 09:39:14 | 显示全部楼层 |阅读模式
  
  1)安装Ubuntu或其他Linux系统
     a)为减少错误,集群中的主机最好安装同一版本的Linux系统,我的是Ubuntu12.04。
         b)每个主机的登陆用户名也最好都一样,比如都是hadoop,不然到最后启动hadoop时会出现不管你密码是否输入正确,都会提示权限不够的错误,如果你之前装系统时没注意到这个问题,可以之后在每个主机上都新建一个用户hadoop来实现,命令如下:

       增加hadoop用户:sudo  adduser hadoop

           把新加的hadoop用户,添加到admin组中,让其有sudo权限:sudo usermod -aG adm,sudo  hadoop
           切换到hadoop用户,以hadoop用户重新登陆linux系统即可。
        c)修改每个主机的主机名hostname:充当主节点的主机名为master,充当从节点的主机名为slave1,slave2,slave3,4.....N
       这里我的实验是2台主机,一个主机充当主节点master,一个主机充当从节点slave2

           可以通过命令:sudo vi /etc/hostname  来打开并修改hostname,修改完之后重新打开一个终端就可以看到结果,例如我这里的主节点主主机中修改完登陆用户名和主机名后如下所示:

           DSC0000.png
          登陆用户名为:hadoop   主机名为:master
           另外一个从节点用户名也为hadoop,主机名为:slave2     
  2)配置网络
    a)配置每个节点的IP使其在同一个局域网内:
        例如:
        master   IP:192.168.130.15     slave2   IP:192.168.130.41

        可以通过命令ifconfig来修改IP,例如 :sudo ifconfig eth0 192.168.130.15(新IP地址)。

        b)在每个master和slave的hosts文件中加入如下几行:
           打开并修改hosts :sudo vi /etc/hosts
      新添加内容:
        192.168.130.15  master
            192.168.130.41   slave2
     c)各个节点相互ping测试
          例如:这里用主节点master ping下从节点slave2

           DSC0001.png
          如果你的实验中slave节点多于1个,每个节点之间都ping下,确保可以ping通。
  3)安装JDK
       Hadoop是用JAVA编写的程序,Hadoop的编译及MapReduce的运行都需要使用JDK,因此在安装Hadoop前,必须安装JDK。
        这里我安装的JDK版本是 jdk-6u38-linux-i586.bin,可用其他版本,但需要修改环境变量以及后面的配置路径。
      需对实验中所有主机执行以下步骤:
    1、把 jdk 安装文件拷贝到/usr/lib 目录下,然后安装
     sudo cp jdk-6u38-linux-i586.bin /usr/lib
     cd /usr/lib
              修改jdk权限: sudo chmod +x jdk-6u38-linux-i586.bin
     修改完权限后就可以安装: sudo ./jdk-6u38-linux-i586.bin
      2、jdk安装成功后修改环境变量并且把 java 安装到系统
    a)配置环境变量,编写一个 java.sh并放到目录 /etc/profile.d 下面,java.sh内容如下:
           



1 #set jdk environment
2 export JAVA_HOME=/usr/lib/jdk1.6.0_38
3 export JRE_HOME=/usr/lib/jdk1.6.0_38/jre
4 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
5 export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
  
       b)提升 java.sh 的权限:
    sudo chmod 775 /etc/profile.d/java.sh
  
    c)刷新 profile
    source /etc/profile
  
    d)把 Java 安装到系统:
         ln –s /usr/lib/jdk1.6.0_38/bin/java /usr/bin/java
  
    e)查看 Java 版本确定已经安装到系统:
  java –version
         DSC0002.png
      如果看到版本信息,说明安装成功。

  4)SSH 无密码验证配置
     Hadoop需要通过SSH来启动slave列表中的各台主机的守护进程,因此SSH必须安装。
       SSH 是安全壳协议,使用公钥私钥机制,安全的在主机间传输文件,现在需要对集群进行无密码验证访问传输的配置。需对集群所有机器进行配置,建议以下操作集群按步骤同步,即所有机器都完成了一个步骤再进行下一步。
       a)、安装 SSH
  sudo apt-get install ssh
  
     b)、在 hadoop 用户下,使用命令:
  ssh-keygen –t rsa。
         一路欢快的回车,有时需要在中间 y/n 时选择 y。
  将在~/.ssh 目录下产生一个 id_rsa 的私钥 和 id_rsa.pub 的公钥。
         DSC0003.png
        ssh-keygen 表示生成密钥,-t 表示指定生成的密钥类型,这里是rsa
  
  c)、进入~/.ssh 目录下,将 id_rsa.pub 复制为 authorized_keys,即把公钥加入到授权的key中。
  cd ~/.ssh
  cp id_rsa.pub authorized_keys
    d)将本机公钥发给所有其他机器

         这里以slave2为例:
         scp id_rsa.pub hadoop@master:~/.ssh/slave2_key      
         中途可能会提示让你输入对方主机的密码,输入之后就会提示成功发送。
         所有机器完成此步骤后,在每台机器~/.ssh 目录下都会有其他所有机器发送来的公钥。

         例如在执行完上面的命令后,此在master主机的~/.ssh/目录下会多出个slave2_key:
         DSC0004.png
      e)将收集到的所有公钥添加到 authorized_keys中
           例如:上面master收到了slave2发来的slave2_key后,把其添加到authorized_keys中
           cat slave2_key  >>  authorized_keys
      f)  ssh登录
           对于两台主机第一次 ssh 连接,需要确认 yes,很重要,必须确保集群所有机器相互 ssh连接过,否则后面 hadoop 安装会出问题。
         以 master 为例
          DSC0005.png
         此时你已经登录到别人的机器了,hadoop@master 变为 hadoop@slave2,可以对slave2机器进行操作了。
         exit
         注意必须要退出,否则你后面做的所有操作都是在其他人的机器上。
  
5)安装Hadoop  
   我这里安装的版本为:hadoop-1.2.0.tar.gz  也可以到官网下载其他版本。
       安装步骤如下:
      a):在/opt 目录下建立 hadoop 目录,把 hadoop-1.2.0.tar.gz 拷贝到/opt/hadoop 目录下,然后解压
               sudo mkdir /opt/hadoop
      sudo cp hadoop-1.2.0.tar.gz /opt/hadoop
    cd /opt/hadoop
    sudo tar –zxvf hadoop-1.2.0.tar.gz
    cd hadoop-1.2.0
    b) :  配置Hadoop

      (1)指定JDK的安装位置:
                 编辑 conf/hadoop-env.sh 文件,把 JAVA_HOME 设置成 Java 安装根路径,如下:
      export JAVA_HOME=/usr/lib/jdk1.6.0_38 ,记住把 export 前面的#去掉
  
          (2)配置conf/目录下的core-site.xml文件,这里配置的是HDFS的地址和端口号:
                 配置之前请先在/opt/hadoop 目录下建立 tmp 文件夹:sudo mkdir /opt/hadoop/tmp
   



#core-site.xml
1
2
3 hadoop.tmp.dir
4 /opt/hadoop/tmp
5 A base for other temporary directories.
6
7
8
9 fs.default.name
10 hdfs://master:9000
11
12                  
  
   (3)配置conf/目录下的 hdfs-site.xml文件:

              配置之前新建目录 /opt/hadoop/hdfs :sudo mkdir /opt/hadoop/hdfs
         



#hdfs-site.xml

1
2
3 dfs.replication
4 1                #这里1是数据副本数量,默认是3,我这里写成1,因为我只用了1个datacode,slave2
5
6
7 dfs.name.dir
8 /opt/hadoop/hdfs/name
9
10
11 dfs.data.dir
12 /opt/hadoop/hdfs/data
13
14
  
     (4)配置 conf/mapred-site.xml
       这里是配置MapReduce的配置文件,配置JobTracker的地址和端口



# conf/mapred-site.xml
1
2
3 mapred.job.tracker
4 master:9001
5
6
  
  (5)配置 conf/masters 和 conf/slaves 来设置主从节点,注意最好使用主机名,并且保证各节点之间可以通过主机名可以互相访问,每个主机名一行:
              我这里的 conf/masters内容为:
     master
   conf/slaves内容为:
         slave2
         (6)提升 hadoop 权限,这里因为安装 hadoop 需要足够高的权限,所以一个简便方法是将整个 hadoop 文件提升至 777 权限:
        sudo chmod 777 -R /opt/hadoop
   对每台机器都进行上述操作。

  
  6)启动hadoop
       下面操作在master主机上进行     a)首先格式化hadoop

       ./bin/hadoop namenode -format
      DSC0006.png

       b)启动hadoop
         ./bin/start-all.sh   启动提示如下:
         DSC0007.png
       从上图中可以看出是先启动了namenode,然后是启动datanode,再启动secondarynamenode,最后启动taskracker.

      c)验证方式
        1)用命令查看集群状态:./bin/hadoop  dfsadmin –report

         DSC0008.png
  
    (2)也可以用java自带jps查看进程:
       在master主机上查看结果如下:
        DSC0009.png
       也可以在slave主机上用jps查看下TaskTracker和DataNode是否被启动
        (3)登录http://master:50070和http://master:50030查看集群状态
        http://master:50070状态如下:
        DSC00010.png
              
  http://master:50030状态如下:
        可以看出启动了一个datanode,因为我这里就只有一个slave2,如果多台主机组成集群,状态更明显。
         DSC00011.png
    d)关闭hadoop
        ./bin/stop-all.sh
        DSC00012.png
    先关闭了jobtracker,其次关闭slave2上的tasktracker,然后关闭namenode,关闭datanode,最后关闭secondarynamenode

运维网声明 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.yunweiku.com/thread-86130-1-1.html 上篇帖子: Linux下,Hadoop环境的安装配置 下篇帖子: Hadoop Streaming框架使用(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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