Centos7 上搭建Hadoop3.1.1集群

Centos7 上搭建Hadoop3.1.1集群

基本网络配置

  • 不论是虚拟机还是物理机, Hadoop集群需要在网络可以共享,且可以访问外网的主机上搭建
IP主机名
192.168.100.101Hadoop1
192.168.100.102Hadoop2
192.168.100.103Hadoop3
  • 计划好以后将以上表格内的内容写入/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

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.defaultFS</name>
    <value>hdfs://192.168.100.101:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>
    </property>
    
  • 修改 hdfs-site.xml
    <property>
    <name>dfs.name.dir</name>
    <value>/usr/local/hadoop/dfs/name</value>
    <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
    </property>
    <property>
    <name>dfs.data.dir</name>
    <value>/usr/local/hadoop/dfs/data</value>
    <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-address</name>
    <value>192.168.100.101:50070</value>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>192.168.100.101:50090</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property> 
    <property>
    <name>dfs.permissions</name>
    <value>false</value>
    <description>need not permissions</description>
    </property>
    
  • 修改 yarn-site.xml
    在命令行下输入hadoop classpath,并将返回的地址复制,在配置下面的yarn-site.xml时会用到。
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>Hadoop1</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.application.classpath</name>
    <value>输入刚才返回的Hadoop classpath路径</value>
    </property>
    
  • 修改 mapred-site.xml
    <property>
    <name>mapred.job.tracker</name>
    <value>Hadoop1:49001</value>
    </property>
    <property>
    <name>mapred.local.dir</name>
    <value>/usr/local/hadoop/var</value>
    </property>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </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进程对应的端口号)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值