hadoop分布式集群部署

  1. 修改主机名
#hostnamectl set-hostname master
#hostnamectl set-hostname slaveone
#hostnamectl set-hostname slavetwo

         2.修改IP地址和主机名的映射关系

vim /etc/hosts
添加映射
192.168.21.110 master
192.168.21.111 slaveone
192.168.21.112 slavetwo

        3、关闭防火墙

停止防火墙:systemctl stop firewalld.service
禁用防火墙:systemctl disable firewalld.service

      4、SSH设置和密钥生成

      SSH设置需要在集群上执行不同的操作,如启动、停止和分布式守护Shell操作。进行身份验证不同的Hadoop用户,需要一种用于Hadoop的用户提供的公钥/私钥对,并使不同的用户共享。以下的命令用于生成使用SSH密钥值对。复制公钥id_rsa.pub为authorized_keys,并提供所有者,读写权限到authorized_keys文件。

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/ .ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

  5、安装hadoop

#tar -zxvf hadoop-3.3.2.tar.gz  -C /usr/local
#配置环境变量
vi /etc/profile
添加
export HADOOP_HOME=/usr/local/hadoop-3.3.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

       6、配置hadoop的hadoop-env.sh文件

      修改hadoop-env.sh文件中JAVA_HOME路径:

export JAVA_HOME=/usr/local/java/jdk1.8.0_144

       7、配置hadoop的集群

  集群的部署规划,如下表。将HDFS集群中NameNode设置在salve0节点。SecondaryNameNode设置在slave2节点。YARN集群中ResourceManager设置在slave1节点。这样分开设计的目的是为了避免一个节点宕机,全部工作不能进行下去的问题。

  • core-site.xml文件
<configuration>
   <!--用来指定hdfs的老大-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <!--用来指定hadoop运行时产生文件的存放目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop-3.3.2/tmp</value>
    </property>
</configuration>
  • hdfs-site.xml文件

<configuration>
   <!--设置名称节点的目录-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop-3.3.2/tmp/namenode</value>
    </property>
    <!--设置数据节点的目录-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop-3.3.2/tmp/datanode</value>
    </property>
    <!--设置辅助名称节点-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:50090</value>
    </property>
    <!--hdfs web的地址,默认为9870,可不配置-->
    <!--注意如果使用hadoop2,默认为50070-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>0.0.0.0:9870</value>
    </property>
    <!--副本数,默认为3,可不配置-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--是否启用hdfs权限,当值为false时,代表关闭-->
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
</configuration>
  • workers文件
master
slaveone
slavetwo
  • yarn-env.sh文件

export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export HADOOP_HOME=/usr/local/hadoop-3.3.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  • yarn-site.xml文件

<configuration>
    <!--配置资源管理器:集群master-->
    <property>        
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <!--配置节点管理器上运行的附加服务-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!--关闭虚拟内存检测,在虚拟机环境中不做配置会报错-->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>
  • mapred-env.sh文件
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
  • mapred_site.xml

<configuration>
    <!--配置MR资源调度框架YARN-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
</configuration>
  • 将master虚拟机上的Hadoop分发到slave1和slave2虚拟机上
#scp -r $HADOOP_HOME root@slaveone:$HADOOP_HOME
#scp -r $HADOOP_HOME root@slavetwo:$HADOOP_HOME
  • 第一次启动集群,需要格式化NameNode
hdfs namenode -format

  

 

posted on 2024-12-01 23:24  溪水静幽  阅读(21)  评论(0)    收藏  举报