01-Hadoop安装

NiuMT 2021-04-12 10:00:50
环境

安装Hadoop

  1. 解压安装包

    [atguigu@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C
    /opt/module

  2. 添加环境变量

    [atguigu@hadoop102 hadoop-3.1.3]$ sudo vim
    /etc/profile.d/my_env.sh

    在 my_env.sh文件末尾添加如下内容 (shift+g)

    :’ #HADOOP_HOME ‘

    export HADOOP_HOME=/opt/module/hadoop-3.1.3

    export PATH=\$PATH:\$HADOOP_HOME/bin

    export PATH=\$PATH:\$HADOOP_HOME/sbin

  3. 测试是否安装成功

    [atguigu@hadoop102 hadoop-3.1.3 ]$ hadoop version

    Hadoop 3.1.3

配置SSH免密登陆

SSH无密登录配置

image-20210411214354771

生成公钥和私钥

[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

将公钥拷贝到要免密登录的目标机器上

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意:

还需要在hadoop102上采用 root 账号,配置一下无密登录到hadoop102、hadoop103、hadoop104;

还需要在hadoop103上采用 atguigu 账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。

还需要在hadoop104上采用 atguigu 账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。

配置集群

核心配置文件

配置core-site.xml

[atguigu@hadoop102 hadoop]$ vi core-site.xml

在该文件中编写如下配置

<!-- 指定HDFS中NameNode的地址 -->
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>


<!-- Hadoop3.x 配置 HDFS 网页登录使用的静态用户为 atguigu -->
<property>
   <name>hadoop.http.staticuser.user</name>
   <value>atguigu</value>
</property>

HDFS配置文件

配置hadoop-env.sh

[atguigu@hadoop102 hadoop]$ vi hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置hdfs-site.xml

[atguigu@hadoop102 hadoop]$ vi hdfs-site.xml

在该文件中编写如下配置

<property>
   <name>dfs.replication</name>
   <value>3</value>
</property>

<!-- nn web 端访问地址 -->
<property>
   <name>dfs.namenode.http address </</name>
   <value>hadoop102:50070</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<!-- 2 nn web 端访问地址 -->
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>hadoop104:50090</value>
</property>

YARN配置文件

配置yarn-env.sh

[atguigu@hadoop102 hadoop]$ vi yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置yarn-site.xml

[atguigu@hadoop102 hadoop]$ vi yarn-site.xml

在该文件中增加如下配置

<!-- Reducer获取数据的方式 -->
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>hadoop103</value>
</property>

<!-- 日志聚集功能使能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<!-- 设置日志聚集服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</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>

MapReduce配置文件

配置mapred-env.sh

[atguigu@hadoop102 hadoop]$ vi mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置mapred-site.xml

[atguigu@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml

[atguigu@hadoop102 hadoop]$ vi mapred-site.xml

在该文件中增加如下配置

<!-- 指定MR运行在Yarn上 -->
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>19888</value>
</property>

在集群上分发配置好的Hadoop配置文件

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/

配置slaves/workers

hadoop2.x修改 /opt/module/hadoop-2.7.2/etc/hadoop/slaves
hadoop3.x修改 /opt/module/hadoop-3.1.3/etc/hadoop/workers
[atguigu@hadoop102 hadoop]$ vi slaves

在该文件中增加如下内容:注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
hadoop102
hadoop103
hadoop104

同步所有节点配置文件:

[atguigu@hadoop102 hadoop]$ xsync slaves

启动

如果集群是第一次启动,需要格式化NameNode,==启动前要关闭所有服务==(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

注意:格式化 NameNode 会产生新的集群 id,导致 NameNode 和 DataNode的集群 id不一致,集群找不到已往数据。 如果集群在运行过程中报错,需要重新格式化 NameNode的话, 一定要 先停止 namenode和 datanode进程, 并且要 删除 所有机器的 data和 logs目录,然后再进行格式化。

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop namenode -format

集群启动/停止HDFS

start-dfs.sh / stop-dfs.sh

集群启动/停止YARN

start-yarn.sh / stop-yarn.sh