hadoop部署

286 阅读3分钟

hadoop官网提供了三种部署方式,单机部署,伪分布式部署以及分布式部署。单机部署意义不大。这里只尝试了伪分布式部署和分布式部署

伪分布式部署

安装HDFS

HDFS是hadoop分布式文件系统,是hadoop的基础,hadoop的一切都基于此。即使目前hadoop的mapreduce已经日薄西山,HDFS依然是重中之重。

  1. 安装jre1.8版本,这个网上教程很多,就不介绍了
  2. 下载hadoop,写作时的稳定版本是3.3.2,我就是使用的这个版本
  3. 将hadoop解压到指定的目录,我解压到/usr/local目录下image.png
  4. hadoop不建议使用root用户执行,所以需要创建一个用户:使用adduser hadoop创建hadoop用户和用户组
  5. 修改hadoop目录的属组:chown -R hadoop:hadoop hadoop-3.2.2
  6. 修改配置文件
    • etc/hadoop/core-site.xml
    <configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    </configuration>
    
    fs.defaultFS:文件系统默认前缀
    • etc/hadoop/hdfs-site.xml
    <configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    </configuration>
    
    dfs.replication:dfs默认副本数
    • etc/hadoop/hadoop-env.sh 在文件中增加export JAVA_HOME=/usr/local/jdk1.8.0_272,不添加这句启动hadoop会失败。
  7. 设置免密码ssh登录localhost
    • ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    • chmod 0600 ~/.ssh/authorized_keys
  8. 启动dfs
    • 格式化文件系统:bin/hdfs namenode -format
    • 启动dfs:sbin/start-dfs.sh
    • 登录页面查看安装结果:http://ip:9870/ image.png

安装yarn

  1. 修改配置文件
    • etc/hadoop/mapred-site.xml
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.application.classpath</name>
            <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
        </property>
    </configuration>
    
    • etc/hadoop/yarn-site.xml
    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.env-whitelist</name>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
    </configuration>
    
  2. 启动yarn:sbin/start-yarn.sh
  3. 登录yarn的resourcemanager界面查看结果:http://ip:8088/ image.png

分布式部署

准备

  1. 准备三台云服务器,一台作为master,两台作为worker,其中master部署NameNode,DataNode,ResourceManager,NodeManager。worker部署DataNode,NodeManager。
172.28.1.228  master
172.28.1.242  worker1
172.28.1.165  worker2

配置及部署

  1. 在三台服务器都装好同样版本的的jre和hadoop,路径保持一致。这里使用的jre版本为1.8,hadoop为3.3.2。
  2. 修改三台主机的主机名,主机名对应为步骤1中的master,worker1,worker2,方便后期查看节点
/etc/hostname
  1. 修改/etc/hosts增加主机名和IP的映射
172.28.1.228    master
172.28.1.242    worker1
172.28.1.165    worker2
  1. 设置主机间的免密登录
    • 每台主机都执行如下命令,由于使用hadoop启动进程,需要在切换到hadoop用户执行
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys
    
    • 每台主机执行如下命令将公钥拷贝的其他主机,其中的{hostname}代表对应的主机名
    ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@{hostname}
    
    • 测试是否可以ssh免密登录其他主机
  2. 创建目录,用于datanode,namenode等的存储目录,属组要设置成hadoop:hadoop
mkdir -p /usr/local/data/hadoop/data
mkdir -p /usr/local/data/hadoop/dfs
mkdir -p /usr/local/data/hadoop/name
mkdir -p /usr/local/data/hadoop/secondary
  1. 修改etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
        <description>指定默认的访问地址以及端口号</description>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/data/hadoop</value>
        <description>其它临时目录的父目录,会被其它临时目录用到</description>
    </property>
    <property>
         <name>io.file.buffer.size</name>
         <value>131072</value>
        <description>在序列中使用的缓冲区大小</description>
    </property>
</configuration>
  1. 修改etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
        <description>副本数,HDFS存储时的备份数量</description>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/data/hadoop/name</value>
        <description>namenode临时文件所存放的目录</description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/data/hadoop/data</value>
        <description>datanode临时文件所存放的目录</description>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:50070</value>
        <description>hdfs web 地址</description>
    </property>
    <property>
        <name>dfs.datanode.address</name>
        <value>master:9866</value>
        <description>datanode和namenode通信的地址</description>
    </property>
</configuration>
  1. 修改etc/hadoop/yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <property>
          <name>yarn.resourcemanager.webapp.address</name>
          <value>master:8088</value>
        <description>配置 yarn 外部可访问,(外网IP:端口)</description>
    </property>
    <property>
          <name>yarn.resourcemanager.resource-tracker.address</name>
          <value>master:8031</value>
        <description>serivce rest api</description>
    </property>
</configuration>
  1. 修改etc/hadoop/workers文件,workers中存放的是需要启动datanode和nodemanager的节点。
master
worker1
worker2
  1. 除了etc/hadoop/workers文件,5-8步在每个节点执行,9只在master节点执行
  2. 以hadoop执行命令启动hdfs
sbin/start-dfs.sh
  1. 以hadoop执行命令启动yarn
sbin/start-yarn.sh
  1. 命令jps查看进程启动情况