zoukankan      html  css  js  c++  java
  • Hadoop 系列(二)安装配置

    Hadoop 系列(二)安装配置

    Hadoop 官网:http://hadoop.apache.or

    一、Hadoop 安装

    1.1 Hadoop 依赖的组件

    1. JDK :从 Oracle 官网下载,设置环境变量(JAVA_HOME、PATH 和 CLASSPATH)。

    2. SSH(安全外壳标议) :推荐安装 Openssh。

      Hadoop 需要通过 SSH 来启动 Slave 列表中各台主机的守护进程,因此 SSH 也是必须安装的,即使是安装伪分布式版本(因为 Hadoop 并没有区分开集群式和伪分布式)。对于伪分布式, Hadoop 会采用与集群相同的处理方式,即按次序启动文件 conf/slaves 中记载的主机上的进程;只不过在伪分布式中 Salve 为 localhost(即为自身),所以对于伪分布式 Hadoop,SSH 一样是必需的。

    1.2 Hadoop 安装

    (1) 创建 hadoop 用户

    groupadd hadoop                             # 创建用户组
    useradd -g hadoop -m -s /bin/bash hadoop    # 创建用户
    passwd hadoop                               # 设置 hadoop 密码为 hadoop
    

    为 hadoop 用户增加管理员权限:

    vim /etc/sudoers
    
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    hadoop  ALL=(ALL)       ALL
    

    (2) 安装并配置 SSH 无密码登陆

    CentOS 默认已安装了 SSH client、SSH server,打开终端执行如下命令进行检验

    rpm -qa | grep ssh
    

    如果返回的结果如下图所示,包含了 SSH client 跟 SSH server,则不需要再安装

    若需要安装,则可以通过 yum 进行安装:

    yum -y install openssh-clients openssh-server
    

    接着执行如下命令测试一下 SSH 是否可用:

    ssh localhost
    

    此时会有如下提示(SSH 首次登陆提示),输入 yes 。然后按提示输入密码,这样就登陆到本机了。

    [root@mdw home]# ssh localhost
    The authenticity of host 'localhost (::1)' can't be established.
    ECDSA key fingerprint is bd:66:a8:94:98:d5:0b:f3:bc:e9:5c:41:4c:ca:b3:d4.
    Are you sure you want to continue connecting (yes/no)? yes   
    Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
    root@localhost's password: 
    Last login: Fri Apr 20 07:07:31 2018 from 192.168.2.1
    

    但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。

    首先输入 exit 退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

    exit                           # 退出刚才的 ssh localhost
    cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
    rm ./id_rsa*                   # 删除之前生成的公匙(如果有)
    ssh-keygen -t rsa              # 会有提示,都按回车就可以
    cat id_rsa.pub >> authorized_keys  # 加入授权
    chmod 600 ./authorized_keys    # 修改文件权限,否则无法登陆,亲测
    

    注意: 一定要 chmod 来一下,不然无法起作用。此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。

    (3) Hadoop 安装

    wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz
    tar -zxvf hadoop-3.1.0.tar.gz
    sudo mv ./hadoop-3.1.0/ ./hadoop        # 将文件夹名改为 hadoop
    sudo chown -R hadoop:hadoop ./hadoop    # 修改文件权限
    

    Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息

    /usr/local/hadoop/bin/hadoop version
    
    [hadoop@mdw ~]$ hadoop version
    Hadoop 3.1.0
    Source code repository https://github.com/apache/hadoop -r 16b70619a24cdcf5d3b0fcf4b58ca77238ccbe6d
    Compiled by centos on 2018-03-30T00:00Z
    Compiled with protoc 2.5.0
    From source with checksum 14182d20c972b3e2105580a1ad6990
    This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.0.jar
    

    (4) 环境变量

    vim /etc/profile.d/start.sh
    
    # hadoop
    HADOOP_HOME=/home/hadoop/
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    二、Hadoop 集群配置

    (1) 网络配置

    配置主机名:

    vim /etc/sysconfig/network
    
    NETWORKING=yes
    HOSTNAME=master
    

    配置 IP/主机名 的映射关系

    vim /etc/hosts
    
    192.168.2.101 master
    192.168.2.102 slave1
    

    修改完成后需要重启一下,重启后在终端中才会看到机器名的变化。

    配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功

    ping master -c 3   # 只ping 3次,否则要按 Ctrl+c 中断
    ping slave1 -c 3
    

    (2) SSH 无密码登陆节点配置

    这个操作是要让 master 节点可以无密码 SSH 登陆到各个 slave 节点上。

    首先生成 master 节点的公匙,在 master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次)

    cd ~/.ssh               # 如果没有该目录,先执行一次 ssh localhost
    rm ./id_rsa*            # 删除之前生成的公匙(如果有)
    ssh-keygen -t rsa       # 一直按回车就可以
    chmod 600 ./authorized_keys    # 修改文件权限
    

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

    cat ./id_rsa.pub >> ./authorized_keys
    

    完成后可执行 ssh master 验证一下(可能需要输入 yes,成功后执行 exit 返回原来的终端)。接着在 master 节点将上公匙传输到 slave1 节点:

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

    scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:

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

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

    如果有其他 slave 节点,也要执行将 master 公匙传输到 slave 节点,在 slave 节点上加入授权这两步。

    这样,在 master 节点上就可以无密码 SSH 到各个 slave 节点了,可在 master 节点上执行如下命令进行检验:

    ssh slave1
    

    (3) 配置集群/分布式环境配置

    集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的 5 个配置文件,这里仅介绍了正常启动所必须的设置项: workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。

    1. 配置 workers

      workers 将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。

      本教程让 master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加一行内容:slave1。

    2. 配置 conf/core-site.xml

      <configuration>
          <!-- 配置默认的文件系统,地址最好使用主机名而不是IP -->
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9090</value>
          </property>
          <!-- Hadoop 运行时产生文件的存储目录 -->
          <property>
              <name>hadoop.tmp.dir</name>
              <value>/usr/local/hadoop/data</value>
          </property>
      </configuration>
      
    3. 配置 conf/hdfs-site.xml

      dfs.replication 一般设为 3,但我们只有一个 slave 节点,所以 dfs.replication 的值还是设为 1

      <configuration>
          <!-- 配置 Hadoop 中 HDFS,默认为 3,单机版需要改为 1 -->
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
      </configuration>
      
    4. 配置 conf/mapred-site.xml

      <configuration>
          <!-- 指定 mr 运行在 yarn 上 -->
          <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
          </property>
      </configuration>
      
    5. 配置 conf/yarn-site.xml

      <configuration>
          <!-- 指定 yarn 的老大(ResourceManager)的地址 -->
          <property>
              <name>yarn.resourcemanager.hostname</name>
              <value>localhost</value>
          </property>
          <!-- reduce 获取数据的方式 -->
          <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
          </property>
      </configuration>
      
  • 相关阅读:
    python,生产环境安装
    neo4j 图数据库
    RNN系列
    机器学习关于AUC的理解整理
    fensorflow 安装报错 DEPENDENCY ERROR
    dubbo Failed to check the status of the service com.user.service.UserService. No provider available for the service
    使用hbase遇到的问题
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
    gradle 安装
    jenkins 安装遇到的坑
  • 原文地址:https://www.cnblogs.com/binarylei/p/8889775.html
Copyright © 2011-2022 走看看