Hadoop集群搭建

Hadoop集群搭建

1. Hadoop集群运行基础环境

Hadoop集群搭建需要jdk和ssh工具。

1.1 安装jdk

Hadoop是用java语言开发的,Hadoop需要运行在jdk平台上;

  1. 我这里用的是jdk-8u144-linux-x64.tar.gz,在官网下载https://www.oracle.com/technetwork/java/javase/downloads/index.html

  2. 解压压缩包,目录可以自己定,后面配置的时候配置自己的目录即可,我这里的解压目录为 /usr/java,命令为:tar -xzvf jdk-8u144-linux-x64.tar.gz,解压后为/usr/java/jdk1.8.0_144

  3. 配置环境变量

    vi  /etc/profile
    

    添加以下

    export JAVA_HOME=/usr/java/jdk1.8.0_144
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
    export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
    export PATH=$PATH:${JAVA_PATH}
    
    

    为了使配置的环境变量生效,执行:

    source /etc/profile
    
  4. 查看是否配置成功

    java -version
    显示如下:
    java version "1.8.0_144"
    Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
    Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
    
    

    说明成功。

  5. 三台机器上都要进行相同的配置,可以直接通过scp命令远程拷贝到其他节点。

1.2 设置ssh免密登录
  1. 设置集群ip
   vi /etc/hosts

在主节点上通过

hostname master 命令修改服务器名称为master

其他两个节点同理:

hostname slave1

hostname slave2

根据准备的集群环境的ip添加以下内容:

   101.10.113.61 master
   101.10.113.62 slave1
   101.10.113.63 slave2
  1. 设置ssh

    在三台机器上分别执行

    ssh-keygen -t rsa
    

    按提示一直回车即可。

    然后在主节点上将生成的公钥复制到其他节点

    ssh-copy-id -i ~/.ssh/id_rsa.pub master
    ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
    ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
    

    执行完之后可以ssh到slave节点试一试。

2. 安装Hadoop

2.1 下载Hadoop

官网地址,http://hadoop.apache.org/,我下载的是hadoop-2.8.5.tar.gz版本

下载完后解压到 /usr目录下,可以重命名为hadoop,安装好的Hadoop目录为

/usr/hadoop;

2.2 配置Hadoop环境变量

同样是配置/etc/profile文件,通过vi /etc/profile命令,修改后执行source /etc/profile命令保存

export JAVA_HOME=/usr/java/jdk1.8.0_144
export HADOOP_HOME=/usr/hadoop

export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}:$HADOOP_HOME/bin

配置成功后执行 hadoop 命令可以发现以下提示:

Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
  CLASSNAME            run the class named CLASSNAME
 or
  where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar <jar>            run a jar file
                       note: please use "yarn jar" to launch
                             YARN applications, not this command.
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp <srcurl> <desturl> copy file or directories recursively
  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
  classpath            prints the class path needed to get the
                       Hadoop jar and the required libraries
  credential           interact with credential providers
  daemonlog            get/set the log level for each daemon
  trace                view and modify Hadoop tracing settings

Most commands print help when invoked w/o parameters.

说明配置成功。

2.3 Hadoop配置

hadoop的配置建议根据版本参考官网的集群配置,之前在网上我参照了别人的配置,导致slave节点的nodemanager起不来,后面根据官网进行了配置文件的设置才正常。

官网链接:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html

版本变动的时候可能会失效,失效的话直接去官网http://hadoop.apache.org/,点击Getting started即可。

这里我们配置下重要的配置文件:

etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml

  1. 配置core-site.xml

    <configuration>
         <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
         </property>
    
        <property>
             <name>io.file.buffer.size</name>
             <value>131072</value>
           </property>
    
            <!-- 指定hadoop临时目录,自行创建 -->
            <property>
               <name>hadoop.tmp.dir</name>
               <value>/usr/hadoop/tmp</value>
            </property>
    </configuration>
    

如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。

  1. 配置hdfs-site.xml

    <configuration>
        <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>master:50090</value>
        </property>
        <property>
          <name>dfs.replication</name>
          <value>2</value>
        </property>
        #目录要自己建
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:/usr/hadoop/name</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:/usr/hadoop/data</value>
        </property>
    </configuration>
    
  2. 配置yarn-site.xml

    <configuration>
         <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
         </property>
         <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
         </property>
         <property>
              <name>yarn.resourcemanager.scheduler.address</name>
              <value>master:8030</value>
          </property>
         <property>
             <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
         </property>
         <property>
             <name>yarn.resourcemanager.admin.address</name>
             <value>master:8033</value>
         </property>
         <property>
             <name>yarn.resourcemanager.webapp.address</name>
             <value>master:8088</value>
         </property>
    </configuration>
    
  3. 配置maped-site.xml

    <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.address</name>
          <value>master:19888</value>
      </property>
    </configuration>
    
2.4 复制hadoop到其他节点

配置完成后,可以通过scp命令直接把配置好的hadoop复制到其他节点上

scp -r /usr/hadoop root@101.10.113.62:/usr
scp -r /usr/hadoop root@101.10.113.63:/usr

注意目录保持一致。

3. 启动hadoop集群

  1. 格式化namenode

    在master节点上执行:

    hdfs namenode -format
    
  2. 启动

    切换到/usr/hadoop/sbin目录下,在mster节点上执行:

    ./start-all.sh
    

    显示如下:

    This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
    Starting namenodes on [master]
    master: starting namenode, logging to /usr/hadoop/logs/hadoop-root-namenode-master.out
    slave2: starting datanode, logging to /usr/hadoop/logs/hadoop-root-datanode-slave2.out
    slave1: starting datanode, logging to /usr/hadoop/logs/hadoop-root-datanode-slave1.out
    Starting secondary namenodes [master]
    master: starting secondarynamenode, logging to /usr/hadoop/logs/hadoop-root-secondarynamenode-master.out
    starting yarn daemons
    starting resourcemanager, logging to /usr/hadoop/logs/yarn-root-resourcemanager-master.out
    slave2: starting nodemanager, logging to /usr/hadoop/logs/yarn-root-nodemanager-slave2.out
    slave1: starting nodemanager, logging to /usr/hadoop/logs/yarn-root-nodemanager-slave1.out
    
    

    通过 jps命令在master节点上查看:

    2449 NameNode
    2664 SecondaryNameNode
    3118 Jps
    2847 ResourceManager
    

    slave1、slave2节点上通过jps命令查看:

    2389 NodeManager
    2281 DataNode
    2543 Jps
    

    说明配置启动成功。

<think>好的,用户想了解如何搭建Hadoop集群的详细步骤和配置。首先,我需要回忆之前学过的Hadoop集群搭建知识,确保步骤正确。记得Hadoop集群通常分为完全分布式模式,需要多台机器,比如hadoop102、hadoop103、hadoop104这样的命名。用户提供的引用里提到了设置这些节点,并测试SSH连接,还有上传安装包。可能这些是关键的步骤。 接下来,我应该按照逻辑分步骤讲解。首先准备环境,包括服务器、Java安装、主机名和hosts文件的配置,以及SSH免密登录的设置。这些都是搭建集群的基础。然后,安装Hadoop,解压安装包,配置环境变量。接下来是核心的配置文件修改,比如hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及workers文件。每个配置文件的作用需要简要说明,比如core-site.xml设置NameNode地址,hdfs-site.xml配置副本数等。 配置完成后,需要同步到其他节点,这里可以用scp命令或者rsync。然后初始化HDFS,启动集群,最后验证是否成功,比如jps查看进程,或者访问Web界面。可能用户在实际操作中会遇到问题,比如SSH连接失败,端口占用,或者配置文件错误,这些常见问题应该提及解决方案。 另外,用户的问题可能涉及到具体的配置参数,比如副本数设置成多少合适,或者资源管理器的配置,这些需要根据集群规模给出建议。比如小型集群副本数可以设为2,但生产环境通常3。还有安全模式的问题,可能需要关闭防火墙或者配置SELinux。 需要确保所有的命令和路径都是正确的,比如JAVA_HOME的路径是否正确,Hadoop的安装目录是否一致。同时,用户可能需要知道如何验证集群是否正常工作,比如运行一个测试的MapReduce作业,或者检查日志文件。 最后,生成相关问题的时候,应该围绕用户可能进一步关心的问题,比如配置参数优化、添加节点、安全配置、性能调优等。这些能帮助用户更深入理解集群管理和维护。</think>### Hadoop集群搭建步骤详解 #### 一、环境准备(3节点示例) 1. **服务器规划** - hadoop102(NameNode + DataNode) - hadoop103(ResourceManager + DataNode) - hadoop104(SecondaryNameNode + DataNode) 2. **基础配置** - 所有节点安装JDK 8+并配置环境变量: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - 配置主机名和/etc/hosts文件: ```bash 192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104 ``` - 配置SSH免密登录: ```bash ssh-keygen -t rsa ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop104 ``` #### 二、Hadoop安装与配置 1. **解压安装包** ```bash tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/ ``` 2. **配置环境变量** ```bash export HADOOP_HOME=/opt/module/hadoop-3.3.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 3. **修改核心配置文件** - `etc/hadoop/hadoop-env.sh`: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ``` - `etc/hadoop/core-site.xml`: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> </configuration> ``` - `etc/hadoop/hdfs-site.xml`: ```xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> ``` #### 三、集群同步与启动 1. **分发配置到所有节点** ```bash scp -r /opt/module/hadoop-3.3.6 hadoop103:/opt/module/ scp -r /opt/module/hadoop-3.3.6 hadoop104:/opt/module/ ``` 2. **初始化HDFS** ```bash hdfs namenode -format ``` 3. **启动集群** ```bash start-dfs.sh # 启动HDFS start-yarn.sh # 启动YARN ``` #### 四、验证集群状态 1. **进程验证** ```bash jps # hadoop102应显示NameNode/DataNode # hadoop103应显示ResourceManager/NodeManager ``` 2. **Web界面验证** - HDFS状态:`http://hadoop102:9870` - YARN状态:`http://hadoop103:8088` #### 五、常见问题解决 1. **SSH连接失败** - 检查防火墙状态:`systemctl stop firewalld` - 验证公钥是否完整复制到`~/.ssh/authorized_keys` 2. **端口冲突** - 使用`netstat -tunlp | grep 8020`检查默认端口占用情况 3. **HDFS无法格式化** - 删除所有节点的`/tmp/hadoop-*`目录后重试[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值