Centos7 上搭建Hadoop3.1.1集群

Centos7 上搭建Hadoop3.1.1集群

基本网络配置

  • 不论是虚拟机还是物理机, Hadoop集群需要在网络可以共享,且可以访问外网的主机上搭建
IP 主机名
192.168.100.101 Hadoop1
192.168.100.102 Hadoop2
192.168.100.103 Hadoop3
  • 计划好以后将以上表格内的内容写入/etc/hosts中(每个都要写)

    echo '192.168.100.101 Hadoop1' >>/etc/hosts
    echo '192.168.100.102 Hadoop2' >>/etc/hosts
    echo '192.168.100.103 Hadoop3' >>/etc/hosts
    
  • 修改主机名(每个主机都要改):

    vim /etc/hostname
    

    将hostname中的内容改为Hadoop1, (第二个就是Hadoop2)

  • 修改ip地址(每个主机都要改)

    vi /etc/sysconfig/network-scripts/ifcfg-ens*
    
    # -----修改如下-----
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no     # --> no
    BOOTPROTO=static    # --> static
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens32
    UUID=45400454-c60e-46f0-bd60-5faa1e7fe8f4
    DEVICE=ens32
    ONBOOT=yes          # --> yes
    
    # -----以下内容为新增-----
    IPADDR=192.168.100.101   # Hadoop2就是102
    GATEWAY=192.168.100.2
    DNS1=192.168.100.2
    NETMASK=255.255.255.0
    

修改完成后执行 reboot 重启三台主机

关闭防火墙

实验环境中关闭防火墙,防止后续查看web页面访问受阻。

systemctl stop firewalld    # 关闭防火墙
systemctl disable firewalld  # 禁止开机启动

配置SSH免密登录

  • 在所有虚拟机中分别执行

    ssh-keygen -t rsa	# 连续三次回车生成密钥
    
  • 在Hadoop1中生成认证的公钥key,再用下面的命令分发给各个节点

    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
    scp /root/.ssh/id_rsa.pub root@Hadoop2:/root/.ssh/authorized_keys
    scp /root/.ssh/id_rsa.pub root@Hadoop3:/root/.ssh/authorized_keys
    
  • 给所有虚报机上的authorized_keys添加权限

    chmod 644 /root/.ssh/authorized_keys
    
  • 测试免密登录

    ssh root@Hadoop3  # 不需输入密码即为成功
    exit            # 退出ssh
    

安装JDK

  • 创建java目录
    mkdir -p /usr/local/java
    
  • 下载jdk(推荐1.8), 并解压到该文件夹
    tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/local/java/
    mv /usr/local/java/jdk1.8.1_91 /usr/local/java/jdk1.8
    
  • 配置 java 环境变量
    vi /etc/profile
     # 在配置文件的最后添加如下配置
    JAVA_HOME=/usr/local/java/jdk1.8
    JRE_JOME=/usr/local/java/jdk1.8/jre
    CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    export JAVA_HOME JRE_JOME CLASS_PATH PATH
    
    保存退出后,执行 source /etc/profile 刷新环境变量
  • 测试一下:
    java -version
    

安装hadoop3.1.1

  • 下载hadoop3.1.11
    https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.1.1
  • 在Hadoop1主机上创建hadoop目录
mkdir -p /usr/local/hadoop
  • 上传到Hadoop1主机上,并解压到/usr/local/hadoop目录下
    tar -zxvf hadoop-3.1.1.tar.gz -C /usr/local/hadoop/
    
  • 配置环境变量
    vi /etc/profile
     # 在配置文件最后一行添加如下配置
     
     # HADOOP
    export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
  • 运行source /etc/profile刷新环境变量
  • 测试 hadoop version

配置hadoop3.1.1

  • 创建目录
     # 在/usr/local/hadoop目录下创建目录
    cd /usr/local/hadoop/
    mkdir tmp     
    mkdir var  
    mkdir dfs  
    mkdir dfs/name  
    mkdir dfs/data  
    
  • 修改配置文件
    cd /usr/local/hadoop/hadoop-3.1.1/etc/hadoop
    vim workers
    删除localhost
    添加从节点主机名,例如: 
    Hadoop2
    Hadoop3
    
  • 修改 hadoop-env.sh
    找到 # JAVA_HOME=/usr/java/testing hdfs dfs -ls一行, 在下面添加如下代码
    export JAVA_HOME=/usr/local/java/jdk1.8.0_65
    export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
    export HDFS_NAMENODE_USER=root
    export HDFS_DATANODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root
    

以下配置在各个文件的中添加

  • 修改 core-site.xml
    <property>
    <name>fs.defaultFSname>
    <value>hdfs://192.168.100.101:9000value>
    property>
    <property>
    <name>hadoop.tmp.dirname>
    <value>/usr/local/hadoop/tmpvalue>
    property>
    
  • 修改 hdfs-site.xml
    <property>
    <name>dfs.name.dirname>
    <value>/usr/local/hadoop/dfs/namevalue>
    <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.description>
    property>
    <property>
    <name>dfs.data.dirname>
    <value>/usr/local/hadoop/dfs/datavalue>
    <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.description>
    property>
    <property>
    <name>dfs.namenode.http-addressname>
    <value>192.168.100.101:50070value>
    property>
    <property>
    <name>dfs.namenode.secondary.http-addressname>
    <value>192.168.100.101:50090value>
    property>
    <property>
    <name>dfs.replicationname>
    <value>2value>
    property> 
    <property>
    <name>dfs.permissionsname>
    <value>falsevalue>
    <description>need not permissionsdescription>
    property>
    
  • 修改 yarn-site.xml
    在命令行下输入hadoop classpath,并将返回的地址复制,在配置下面的yarn-site.xml时会用到。
    <property>
    <name>yarn.resourcemanager.hostnamename>
    <value>Hadoop1value>
    property>
    <property>
    <name>yarn.nodemanager.aux-servicesname>
    <value>mapreduce_shufflevalue>
    property>
    <property>
    <name>yarn.application.classpathname>
    <value>输入刚才返回的Hadoop classpath路径value>
    property>
    
  • 修改 mapred-site.xml
    <property>
    <name>mapred.job.trackername>
    <value>Hadoop1:49001value>
    property>
    <property>
    <name>mapred.local.dirname>
    <value>/usr/local/hadoop/varvalue>
    property>
    <property>
    <name>mapreduce.framework.namename>
    <value>yarnvalue>
    property>
    

同步

  • 使用scp命令将Hadoop1下的目录复制到各个从节点的相应位置上
    scp -r /usr/local/java Hadoop2:/usr/local/java
    scp -r /usr/local/hadoop Hadoop2:/usr/local/hadoop
    scp -r /etc/profile Hadoop2:/etc/
    scp -r /usr/local/java Hadoop3:/usr/local/java
    scp -r /usr/local/hadoop Hadoop3:/usr/local/hadoop
    scp -r /etc/profile Hadoop3:/etc/
    
  • 在从节点上分别运行下述命令刷新环境变量
    source /etc/profile
    

格式化节点

  • 在Hadoop1 中运行: hdfs namenode -format

    运行之后不报错,并在倒数第五六行有successfully即为格式化节点成功

  • 运行 start-all.sh,启动hadoop集群的服务

测试

  • 在浏览器上访问hdfs的web界面

    在浏览器上输入 http://192.168.100.101:8088 (前者为主节点ip地址,后者为hdfs的web进程对应的端口号)

你可能感兴趣的:(Python)