美文网首页HadoopHadoop我爱编程
hadoop日记2——安装分布式hadoop2.7.3

hadoop日记2——安装分布式hadoop2.7.3

作者: 我是Mr小赵先生 | 来源:发表于2017-01-01 14:25 被阅读435次

    系统:ubuntu 16.04、Apache hadoop2.7.3
    教程适用于hadoop2.0以上的系统
    教程使用两个节点作为集群环境: 一个作为 Master 节点,局域网 IP 为 192.168.1.100;另一个作为 Slave 节点,局域网 IP 为 192.168.1.101。

    hadoop安装对于熟悉linux系统的人来说难度系数会大大的降低,教程比较适合不懂linux的新手。

    安装流程

    1. 安装linux ubuntu系统(我安装了linux桌面)
    2. 创建hadoop用户
    3. 更新apt
    4. 安装vim或者gedit
    5. 配置hosts和hostname
    6. 安装SSH、配置SSH无密码登录
    7. 安装java 环境
    8. 安装hadoop2
    9. 配置hadoop2集群/分布式环境
    10. hadoop2异常说明

    安装linux ubuntu系统

    ubuntu桌面版下载地址(linux新手推荐用桌面版比较容易上手)
    http://www.ubuntu.com/download/desktop/

    LTS表示 Long Term Support ,长期支持,linux建议安装LTS的

    具体安装教程如下(这个教程感觉讲的很详细)
    http://www.jb51.net/os/windows/298507.html

    创建hadoop用户

    这一步可以省略,如果你的linux系统已经有了别的用户
    linux命令

    sudo useradd -m hadoop -s /bin/bash  #这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell
    sudo passwd hadoop  #设置密码,按提示输入两次密码
    sudo adduser hadoop sudo  #为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题
    

    最后注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面使用刚创建的 hadoop 用户进行登陆

    更新apt

    linux命令

    sudo apt-get update  #更新apt
    

    安装vim或者gedit

    新手推荐安装gedit,比较符合windows操作习惯
    安装命令

    sudo apt-get install vim  #安装vim
    sudo apt-get install gedit  #安装gedit
    

    后续需要更改一些配置文件,会用到vim或者gedit,请根据个人喜欢自行使用

    配置hosts和hostname
    配置以后方便管理,同时可以使用主机名来访问局域网里的其它主机

    sudo vim /etc/hosts  #配置hosts
    

    例如本教程使用两个节点的名称与对应的 IP 关系如下:

    192.168.1.100   Master
    192.168.1.101   Slave1
    
    sudo vim /etc/hostname  #配置hostname
    

    例如本教程将192.168.1.100的主机名改成Master,将192。168.1.101改成Salve1
    此时应该重启下系统

    安装SSH配置SSH无密码登录

    集群、单节点模式都需要用到 SSH 登陆(master),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server

    sudo apt-get install openssh-server  #安装SSH server
    
    ssh localhost  #使用命令登录本机,此时会有SSH首次登陆提示,输入 yes 。然后按提示输入密码,这样就登陆到本机了,然后输入【exit】退出
    

    配置SSH无密码登录
    利用 ssh-keygen 生成密钥

    cd ~/.ssh/  #若没有该目录,请先执行一次ssh localhost
    ssh-keygen -t rsa  #会有提示,都按回车就可以,最后可以输入ls命令查看目录下的文件
    

    让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行:

    cat ./id_rsa.pub >> ./authorized_keys  #完成后可执行 ssh Master,就可以无密码登录到本地,验证以后记得输入exit,返回原来终端
    

    在Master 节点上将公匙id_rsa.pub传输到 Slave1 节点:

    scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/  #这里将公钥放在了Slave1节点/home/hadoop/目录下,scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。
    

    在 Slave1 节点上,将 ssh 公匙加入授权:

    mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    rm ~/id_rsa.pub    # 用完就可以删掉了
    

    最好可以在Master节点通过ssh Slave1命令来测试下是否可以无密码登录到Salve1节点上

    安装java环境

    下载oracle JDK,可以通过https://wiki.apache.org/hadoop/HadoopJavaVersions 查看要hadoop支持哪些版本JDK

    安装

    sudo tar -zxf {jdk存放的目录}/jdk-xxx.linux.tar.gz -C /usr/local    # 解压到/usr/local中
    

    配置Javahome

    sudo gedit /etc/profile  #打开配置文件
    

    在打开的文件末尾加入如下变量,然后保存

    export JAVA_HOME={jdk安装目录}  #例如/usr/local/java/jdk1.8.0_111
    export CLASSPATH=$JAVA_HOME/lib/
    export PATH=$PATH:$JAVA_HOME/bin
    

    校验是否配置成功

    echo $JAVA_HOME     # 检验变量值
    java -version
    $JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样
    
    出现如下提示表示配置成功,如果无反映可以尝试重启系统

    安装hadoop2
    我们将hadoop2安装在Master主机上面,一切配置好之后,把hadoop2直接复制到Slave1主机上面即可
    下面的操作都是在Master主机上进行的

    下载hadoop2
    Hadoop2可以通过http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载 “stable” 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

    hadoop-2.7.3.tar.gz是我们要下载的文件

    安装hadoop2

    sudo tar -zxf {hadoop下载路径}/hadoop-2.7.3.tar.gz -C /usr/local    # 解压到/usr/local中
    cd /usr/local/
    sudo mv ./hadoop-2.7.3/ ./hadoop            # 将文件夹名改为hadoop
    sudo chown -R hadoop ./hadoop       # 修改文件权限
    

    校验hadoop2是否安装成功

    cd /usr/local/hadoop
    ./bin/hadoop version
    
    看到这个信息表示hadoop2安装成功
    配置hadoop环境变量
    将 Hadoop 安装目录加入 PATH 变量中,这样就可以在任意目录中直接使用 hadoo、hdfs 等命令了。首先执行 sudo gedit /etc/profile
    修改PATH,在PATH末尾加入:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
    加上之前配置的java环境,最好的PATH如下
    export PATH=$PATH:$JAVA_HOME/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
    

    配置hadoop2集群/分布式环境,在Master主机上进行配置

    集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
    官方文档地址【2.7.3doc】:http://hadoop.apache.org/docs/r2.7.3/

    1. 文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。
    2. core-site.xml
    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://Master:9000</value>
            </property>
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/usr/local/hadoop/tmp</value>
                    <description>Abase for other temporary directories.</description>
            </property>
    </configuration>
    
    1. 文件 hdfs-site.xml,dfs.replication 一般设为 3表示有3个Slave节点,但我们只有一个 Slave 节点,所以 dfs.replication 的值设为 1:
    <configuration>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>Master:50090</value>
            </property>
            <property>
                    <name>dfs.replication</name>
                    <value>1</value>
            </property>
            <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/name</value>
            </property>
            <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/data</value>
            </property>
    </configuration>
    
    1. 文件 mapred-site.xml (hadoop2.7.3需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:
    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>Master:10020</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>Master:19888</value>
            </property>
    </configuration>
    
    1. 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>
    

    将配置好的hadoop2从Master主机复制到其它Slave主机

    Master节点的hadoop配置好以后,将/usr/local/hadoop文件夹复制到各个Slave节点。

    在Master节点执行

    cd /usr/local
    tar -zcf ~/hadoop.master.tar.gz ./hadoop   #将hadoop文件夹压缩到/home/hadoop/目录下
    cd ~
    scp ./hadoop.master.tar.gz Slave1:/home/hadoop  #将hadoop.master.tar.gz从Master主机复制到Salve1主机/home/hadoop目录下
    

    在Salve节点执行

    sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local  #解压安装
    sudo chown -R hadoop /usr/local/hadoop  #给hadoop目录赋予读写权限
    

    格式化NameNode

    首次启动需要先在 Master 节点执行 NameNode 的格式化:

    hdfs namenode -format       # 首次运行需要执行初始化,之后不需要
    

    启动hadoop2

    在Master节点执行如下操作

    start-dfs.sh
    start-yarn.sh
    mr-jobhistory-daemon.sh start historyserver
    

    通过命令jps可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,在 Slave 节点可以看到 DataNode 和 NodeManager 进程。缺少任一进程都表示出错。我们通过浏览器打开网址:http://master:50070/查看datanode和namenode的状态,如果有异常通过查看集群log文件来排查异常。

    hadoop2异常说明

    相关文章

      网友评论

        本文标题:hadoop日记2——安装分布式hadoop2.7.3

        本文链接:https://www.haomeiwen.com/subject/ulfivttx.html