zoukankan      html  css  js  c++  java
  • hadoop单机and集群模式安装

    最近在学习hadoop,第一步当然是亲手装一下hadoop了。

    下面记录我hadoop安装的过程:

    注意:

    1,首先明确hadoop的安装是一个非常简单的过程,装hadoop的主要工作都在配置文件上,因此最最重要的一点就是需要了解hadoop每个配置项的具体含义

    (今天时间关系,先把我的安装过程记录下来,关于每一步的配置具体表示什么意思,有时间详细写出来)

    2,官方文档是最好的帮助文件,如果你的英语过关,希望多去看官方的文档;如果你的英语很烂,也可以去上面看着练习一下英语,耶!

    3,本人比较懒,官方文档看了一点,实在看不下去了,找了博客,地址:http://blog.csdn.net/jasonty/article/details/50958466(但是这里面有坑哦

    4,hadoop版本2.6.4稳定版,系统版本ubuntu14.04

    一  hadoop单机模式

    这个由于太简单了,这里就不写了,直接看官方文档,如果你装不了集群的话,那就试一试伪集群吧,同样官方文档,地址:http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/SingleCluster.html

    二   hadoop cluster mode

    再次贴一下参考博客地址:http://blog.csdn.net/jasonty/article/details/50958466

    首先非常感谢博主的帮忙,博主的配置基本全部正确。

    下面内容大部分copy博主,可能加一些更细节的描述

    第一步:创建Hadoop集群用户组

    目的:我们总不能一直用root吧,你可以用自己单独的用户,比如我就是用chenkh,当然也可以配置新用户

    1.分别在四台主机上创建一个新用户,名为hadoop,所属群组为hadoop,并设置新用户密码:

      sudo adduser hadoop

    2.检查hadoop是否拥有sodu权限

     sudo cat /etc/group| grep sudo

    回车之后会显示拥有sodu权限的用户,类似于:

      sudo:x:27:tangyeah,hadoop

    3.如果hadoop用户没有列出,需手动将hadoop加入到sudo用户组:

      sudo /usr/sbin/usermod -G 27 hadoop

    这样新建的hadoop用户就可以使用sudo命令临时获取root权限了。

    第二步:修改主机名

    四台主机的规划如下:

    ip地址主机名用途
    9.119.131.131 master NameNode
    9.119.131.56 slave1 DataNode
    9.119.133.213 slave2 DataNode
    9.119.133.99 slave3 DataNode

    使用如下命令查看本机ip地址:

    hadoop@pc1:~$ ifconfig

    1.分别更改4台主机的主机名,此处仅以NameNode为例:

    sudo nano /etc/hostname

    将其内容改为master,保存并关闭。

    2.分别配置四台主机的hosts文件:

    sudo nano /etc/hosts

    将以下代码加入到hosts中:

    9.119.131.131 master
    9.119.131.56 slave1
    9.119.133.213 slave2
    9.119.133.99 slave3

    保存并关闭,注意一式四份,每台都要配。

    三、设置ssh免密码验证

    1.安装必要的组件

    sudo apt-get install rsync
    sudo apt-get install openssh-client
    sudo apt-get install openssh-server

    2.使用hadoop用户登陆master,生成公钥、私钥对

    hadoop@master:~$ sudo ssh-keygen -t rsa -p''

    3.将id_rsa.pub加入到授权的key中

    hadoop@master:~$ sudo cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    4.在本机上测试一下,自己连自己:

    hadoop@master:~$ ssh master

    第一次连接需要输入yes确认,若仍需要输入密码则需要提高authorized_keys的权限:

    hadoop@master:~$ sudo chmod 600 .ssh/authorized_keys

    至此,第一台机器就搞定了。

    5.hadoop用户分别登陆其余slave机,分别如上生成密钥对。

    6.将3台slave的id_rsa.pub复制到master上:

    slave1:

    hadoop@slave1:~$ scp /home/hadoop/.ssh/id_rsa.pub hadoop@master:/home/hadoop/.ssh/slave1

    slave2:

    hadoop@slave2:~$ scp /home/hadoop/.ssh/id_rsa.pub hadoop@master:/home/hadoop/.ssh/slave2

    slave3:

    hadoop@slave3:~$ scp /home/hadoop/.ssh/id_rsa.pub hadoop@master:/home/hadoop/.ssh/slave3

    7.将三台slave的密钥加入到授权的key中

    hadoop@master:~$ sudo cat ~/.ssh/slave1 >> ~/.ssh/authorized_keys
    hadoop@master:~$ sudo cat ~/.ssh/slave2 >> ~/.ssh/authorized_keys
    hadoop@master:~$ sudo cat ~/.ssh/slave3 >> ~/.ssh/authorized_keys

    至此,三台slave登入master就应该可以免密码登入了。

    8.将master的授权公钥复制到所有的slave机器上

    hadoop@master:~$ scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys
    hadoop@master:~$ scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/authorized_keys
    hadoop@master:~$ scp /home/hadoop/.ssh/authorized_keys hadoop@slave3:/home/hadoop/.ssh/authorized_keys

    至此,master登入三台slave也可以免密码登入了,可以在任意一台电脑上登陆任意其他电脑或自己测试一下。

    hadoop@master:~$ ssh slave2
    hadoop@slave2:~$ ssh slave2
    hadoop@slave2:~$ ssh slave3
    hadoop@slave3:~$ ssh master

    第四步:下载安装JDK和Hadoop镜像

    先在master上安装配置好,然后复制到slave上。

    1.JDK的下载和安装 
    略,参考http://blog.csdn.net/jasonty/article/details/50936982

    2.Hadoop2.6.4的下载和安装 
    Hadoop2.6.4官方下载链接:http://hadoop.apache.org/releases.html 
    选择2.6.4对应的binary点击下载(source是未编译的源代码,需要另搭环境重新编译),解压缩并移至/usr文件夹下,重命名为hadoop

    hadoop@master:~$ tar -zxvf /home/tangyeah/Downloads/hadoop-2.6.4.tar.gz
    hadoop@master:~$ sudo cp -r /home/tangyeah/hadoop-2.6.4 /usr
    hadoop@master:~$ sudo mv /usr/hadoop-2.6.4 /usr/hadoop

    3.更改环境变量

    hadoop@master:~$ sudo nano /etc/profile

    添加如下代码:

    export JAVA_HOME=/usr/java(当然是添加你的JAVA_HOME了)
    export HADOOP_HOME=/usr/hadoop
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    保存关闭,并使之生效:

    hadoop@master:~$ source /etc/profile

    第五步:修改Hadoop配置文件

    共有7个文件需要配置,列出清单如下:

    /usr/hadoop/etc/hadoop/hadoop-env.sh 
    /usr/hadoop/etc/hadoop/yarn-env.sh 
    /usr/hadoop/etc/hadoop/core-site.xml 
    /usr/hadoop/etc/hadoop/hdfs-site.xml 
    /usr/hadoop/etc/hadoop/yarn-site.xml 
    /usr/hadoop/etc/hadoop/mapred-site.xml 
    /usr/hadoop/etc/hadoop/slaves

    1.hadoop-env.sh

    # The java implementation to use.
    export JAVA_HOME=/usr/java
    # Assuming your installation directory is /usr/local/hadoop  
    export HADOOP_PREFIX=/usr/hadoop

    2.yarn-env.sh

    export JAVA_HOME=/usr/java

    3.core-site.xml

    <configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> </configuration>

    /home/hadoop/tmp需手动创建

    4.hdfs-site.xml

    <configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/hadoop/names</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/hadoop/data</value>
    </property>
    <property> 
        <name>dfs.replication</name> 
        <value>3</value> 
    </property> 
    <property>
        <name>dfs.datanode.ipc.address</name>
        <value>0.0.0.0:50020</value>
    </property>
    <property>
        <name>dfs.datanode.http.address</name>
        <value>0.0.0.0:50075</value>
    </property>
    </configuration>

    /usr/hadoop/names 
    /usr/hadoop/data 
    这两个目录也需要手动创建

    5.yarn-site.xml

    <configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
     

    6.mapred-site.xml

    如果该文件不存在,手动创建之。

    <configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    </configuration>

    7.slaves

    slave1
    slave2
    slave3

    六、Hadoop的启动与关闭

    1.关闭防火墙(先查看防火墙有没有开启,开启的话最好关闭,不通版本关闭方法不同)

    sudo /etc/init.d/iptables status
    sudo /etc/init.d/iptables stop

    2.NameNode初始化,仅在第一次启动的时候执行。

    hadoop@master:~$ cd /usr/hadoop/bin
    hadoop@master:/usr/hadoop/bin$ ./hadoop namenode -format

    3.启动

    hadoop@master:~$ cd /usr/hadoop/sbin
    hadoop@master:/usr/hadoop/sbin$ start-dfs.sh
    hadoop@master:/usr/hadoop/sbin$ start-yarn.sh

    4.验证

    hadoop@master:~$ jps
    8918 SecondaryNameNode
    7562 Jps
    8701 NameNode
    9438 ResourceManager
    hadoop@slave1:~$ jps
    10322 Jps
    4836 ResourceManager
    6804 DataNode
    4693 SecondaryNameNode
    6923 NodeManager

    5.执行命令

    hadoop@master:~$ bin/hdfs dfs -mkdir /user
    hadoop@master:~$ bin/hdfs dfs -mkdir /user/chenkh
    hadoop@master:~$ bin/hdfs dfs -put etc/hadoop input 
    hadoop@master:~$ bin/hadoop jar share/hadoop/mapreduce//hadoop-mapreduce-examples-2.6.5.jar grep input output 'dfs[a-z.]+'
    hadoop@master:~$ bin/hdfs dfs -get output output
    hadoop@master:~$ cat output/*
    整个过程运行无误,表示安装成功
     

    6.关闭

    hadoop@master:~$ stop-all.sh
    web监控界面应该有的信息
    http://master:50070


     http://master:8088

     
  • 相关阅读:
    多线程-死锁代码示例
    区块链技术:以太方学习文档
    svn 不能校验路径“XXX”的锁;没有匹配的可用锁令牌 故障解决方法
    Oracle ORA-27102的解决办法(out of memory)
    Linux常用命令语法+示例
    Java如何实现form表单提交的数据自动对应实体类(源码)
    Java分布式锁看这篇就够了
    quartz时间配置
    volatile 实现原理
    == 和 equals()的区别
  • 原文地址:https://www.cnblogs.com/chen-kh/p/5998566.html
Copyright © 2011-2022 走看看