IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> (二)、安装Hadoop -> 正文阅读

[大数据](二)、安装Hadoop

(二)、安装Hadoop

1、安装JDK

  • 下载

  • 建议下载以==-linux-x64.tar.gz==结尾的

  • 先创建两个文件夹==/opt/software和/opt/modules==

    # /opt/software 是用来存放安装包的,/opt/modules是用来存放解压后的文件,方便管理
    mkdir -p /opt/sodtware /opt/modules
    
  • 解压

    tar -zxvf jdk-8u291-linux-x64.tar.gz -C /opt/modules
    
  • 配置环境变量

    cd /etc/profile.d/
    vim my_env.sh
    # 插入以下内容,然后:wq保存退出
    export JAVA_HOME=/opt/modules/jdk1.8.0_291
    export PATH=$JAVA_HOME/bin
    
  • 使配置文件生效

    source /etc/profile
    
  • 测试是否安装成功,出现版本号即为成功

    java -version
    

2、安装hadoop

  • 下载

  • 上传到/opt/software

  • 解压

    tar -zxvf hadoop-3.1.3.tar.gz -C /opt/modules
    
  • 配置环境变量

    vim /etc/profile.d/my_env.sh
    # 插入以下内容,然后:wq保存退出
    export HADOOP_HOME=/opt/modules/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
  • 使配置文件生效

    source /etc/profile
    
  • 测试是否成功

    # 输入hadoop命令如果出现版本号即为成功
    hadoop version
    

3、配置hadoop(主要讲解集群模式)

3.1、修改host文件

3.1.1、给虚拟机分配一个公网ip
  • 先查看自己物理机的ip,如下图所示

在这里插入图片描述

  • 修改Vagrantfile文件

    // 添加下面的到文件后面,注意网段要和物理机的一样
    config.vm.network "public_network", ip: "192.168.0.111"
    
3.1.2、修改hosts文件
vim /etc/hosts
# 添加以下内容,根据自己实际情况进行更改,前面为ip,后面为hostname,ip为上面设置的公网ip
192.168.0.111	hadoop101
192.168.0.112	hadoop102
192.168.0.113	hadoop103

3.2、编写分发脚本

  • 已有的分发命令

    • scp

      # scp 是会将所有的文件进行分发的,例如将jdk分发到hadoop103节点下的/opt/modules
      scp -r /opt/module/jdk1.8.0_212  atguigu@hadoop103:/opt/modules
      
    • rsync

      # rsync 只会将有差异的文件进行分发,例如下面将hadoop分发给hadoop103节点
      rsync -av hadoop-3.1.3/  atguigu@hadoop103:/opt/module/hadoop-3.1.3/
      

      ==注意:==这两个命令都有一个缺点就是只能一个一个进行分发,所以我们自定义一个分发脚本

  • xsync

    # 回到用户目录
    cd /root/bin
    # 创建脚本文件
    vim xsync
        # 添加以下内容
        #!/bin/bash
        #1. 判断参数个数
        if [ $# -lt 1 ]
        then
         echo Not Enough Arguement!
         exit;
        fi
        #2. 遍历集群所有机器
        for host in hadoop101 hadoop102 hadoop103
        do
         echo ==================== $host ====================
         #3. 遍历所有目录,挨个发送
         for file in $@
         do
         #4. 判断文件是否存在
         if [ -e $file ]
         then
         #5. 获取父目录
         pdir=$(cd -P $(dirname $file); pwd)
         #6. 获取当前文件的名称
         fname=$(basename $file)
         ssh $host "mkdir -p $pdir"
         rsync -av $pdir/$fname $host:$pdir
         else
         echo $file does not exists!
         fi
         done
        done
    # 给xsync添加可执行权限
    chmod +x xsync
    # 测试xsync脚本
    xsync /root/bin
    

3.3、设置免密登录

# 执行下面命令,会出现公钥和私钥的文件
ssh-keygen -t rsa
# 将公钥拷贝到要免密登录的机器上
ssh-copy-id hadoop101
ssh-copy-id hadoop102
ssh-copy-id hadoop103
# 注意上面步骤集群的机器都需要进行

4、修改配置文件

4.1、修改core-site.xml文件

vim /opt/modules/hadoop-3.1.3/etc/hadoop/core-site.xml
# 在<configuration></configuration>中添加以下内容
<!-- 指定 NameNode 的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop101:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/modules/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

4.2、修改hdfs-site.xml文件

vim /opt/modules/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
# 在<configuration></configuration>中添加以下内容
<!-- nn web 端访问地址-->
<property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop101:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop103:9868</value>
</property>

4.3、修改yarn-site.xml文件

vim /opt/modules/hadoop-3.1.3/etc/hadoop/yarn-site.xml
# 在<configuration></configuration>中添加以下内容
<!-- 指定 MR 走 shuffle -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop102</value>
</property>
<!-- 环境变量的继承 -->
<property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
    NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
    RED_HOME</value>
</property>

<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://hadoop101:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

4.4、修改mapred-site.xml文件

vim /opt/modules/hadoop-3.1.3/etc/hadoop/mapred-site.xml
# 在<configuration></configuration>中添加以下内容
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop101:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>
# 下面是执行wordcount的时候报错,然后提示需要添加以下内容,我就加上了
<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>
<property>
    <name>mapreduce.application.classpath</name>
    <value>/opt/modules/hadoop-3.1.3/share/hadoop/mapreduce/*, /opt/modules/hadoop-3.1.3/share/hadoop/mapreduce/lib/*</value>
</property>

4.5、修改works

vim /opt/modules/hadoop-3.1.3/etc/hadoop/works
# 删除原来内容,添加自己的节点进去
hadoop101
hadoop102
hadoop103

5、启动以及测试

5.1、启动

# 1、初始化namenode,在安装namenode的节点上执行下面命令(我的是hadoop101)
hdfs namenode -format
# 2、启动hadoop,在安装namenode的节点上执行下面命令(我的是hadoop101)
start-dfs.sh
# 3、启动yarn,在安装resourceManage节点上执行(我的是hadoop102)
start-yarn.sh
# 4、启动历史服务器,在mapred-site.xml中指定的节点执行(我的是hadoop101)
mapred --daemon start historyserver
# 5、使用jps查看启动情况
# hadoop101的结果应该是
DataNode
JobHistoryServer
NameNode
Jps
NodeManager
# hadoop102的结果应该是
NodeManager
DataNode
ResourceManager
Jps
# hadoop103的结果应该是
DataNode
NodeManager
SecondaryNameNode
Jps

5.2、测试

# 1、创建input文件夹,在hdfs上
hadoop fs -mkdir /input
# 2、在本地创建word.txt
vim word.txt
# 填入内容,保存退出
aa bb
cc aa
e
dd
# 3、上传到hdfs /input文件夹下
hadoop fs -put ./word.txt /input
# 4、执行wordcount
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
# 5、执行完成可以访问hdfs web 页面,和历史服务器,yarn的web界面查看
# hadoop101:9870
# hadoop101:19888
# hadoop102:8088
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:08:54  更:2021-07-26 12:09:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/26 20:30:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码