当前位置: 首页 > news >正文

Hadoop环境搭建

一、Linux环境准备

  • Linux命令查询https://www.linuxcool.com/ http://linux.51yip.com/

  • 安装Linux虚拟机

  • 安装 sudo apt install open-vm-tools

  • 安装 sudo apt install open-vm-tools-desktop

  • (可选)换国内源

​​ 在这里插入图片描述

在这里插入图片描述

sudo apt update 更新软件列表,换源完成。

sudo apt upgrade 更新软件

  • 安装常用工具

    ssh:sudo apt install ssh
    vim:sudo apt install vim
    网络工具: sudo apt install net-tools
    Pip工具:sudo apt install python3-pip

    SSH

    https://www.cnblogs.com/linuxAndMcu/p/10766589.html

    https://www.jb51.net/article/156422.htm

    SSH分openssh-client和openssh-server

    dpkg --list|grep ssh 若结果中没有出现openssh-server,则说明没有安装。

    安装客户端:sudo apt install ssh 或者 sudo apt install openssh-client

    安装服务端:sudo apt install openssh-server

    如果出现

    在这里插入图片描述

    则输入:sudo apt install openssh-client=1:8.2p1-4

    SSH常用命令

    #查看状态 sudo service ssh status

    ps -e |grep ssh

    #停止服务 sudo service ssh stop

    #启动服务 sudo service ssh start

    #重启服务 sudo service ssh restart

    #登录 (zhilan为192.168.0.125机器上的用户,需要输入密码。)

    #常用格式:ssh [-llogin_name] [-p port] [user@]hostname

    ssh zhilan@192.168.0.125

    #断开连接 exit

    安全要点:
    1.密码应该经常换
    2.使用非默认端口
    3.限制客户端登陆地址
    4.禁止管理员登陆

    5.仅允许有限制用户登陆

    6.使用基于密钥的认证

    net-tools

    https://blog.csdn.net/csdn_kou/article/details/90240586

  • 配置静态IP1

    :在windows 命令行输入ipconfig,查看已经分配的局域网地址,不要设置重复。
    查看: ifconfig 或 ip addr
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 配置静态IP2
    20.04版本静态ip配置、动态ip配置、双网卡配置https://blog.csdn.net/qq_42255854/article/details/109858464Ubuntu

    在这里插入图片描述

  • 设置主机映射

    sudo vim /etc/hosts
    192.168.68.1	master
    hostnaamectl
    sudo vim /etc/hostname
    master
    
  • 关闭防火墙

    https://www.linuxidc.com/Linux/2016-12/138259.htm
    https://blog.csdn.net/weixin_34293246/article/details/92148586
    #查看防火墙状态
    sudo ufw status
    #开启防火墙
    sudo ufw enable
    #关闭防火墙
    sudo ufw disable
    #查看防火墙开机启动状态
    chkconfig iptables --list
    #关闭防火墙开机启动
    chkconfig iptables offufw default allow/deny:外来访问默认允许/拒绝ufw allow/deny 20:允许/拒绝 访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。ufw allow/deny servicename:ufw从/etc/services中找到对应service的端口,进行过滤。ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25:允许自10.0.1.0/10的tcp封包访问本机的25端口。ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则
    
  • SSH免密登录

    cd ~/.ssh/  #若没有此目录,执行ssh localhost
    ssh-keygen -t rsa
    #改权限https://www.cnblogs.com/songgj/p/8890710.html
    #.ssh目录的权限为700,其下文件authorized_keys和私钥的权限为600
    cat id_rsa.pub >> authorized_keys #>> 是追加内容  > 是覆盖原有内容
    或者
    ssh-copy-id root@hadoop01 # ssh-copy-id 将key写到远程机器的 ~/.ssh/authorized_key.文件中chown 修改文件和文件夹的用户和用户组属性
    1。要修改文件hh.c的所有者.修改为sakia的这个用户所有
    chown sakia hh.c
    这样就把hh.c的用户访问权限应用到sakia作为所有者2。将目录 /tmp/sco 这个目录的所有者和组改为sakia和组net
    chown -R sakia:net /tmp/scochmod 修改文件和文件夹读写执行属性
    1。把hh.c文件修改为可写可读可执行
    chmod 777 hh.c
    要修改某目录下所有的文件属性为可写可读可执行
    chmod 777 *.*
    把文件夹名称与后缀名用*来代替就可以了。
    同理若是要修改所有htm文件的属性
    chmod 777 *.htm
    2。把目录 /tmp/sco修改为可写可读可执行
    chmod 777 /tmp/sco要修改某目录下所有的文件夹属性为可写可读可执行
    chmod 777 *
    把文件夹名称用*来代替就可以了要修改/tmp/sco下所有的文件和文件夹及其子文件夹属性为可写可读可执行
    chmod -R 777 /tmp/sco可写 w=4
    可读 r=2
    可执行 x=1
    777就是拥有全权限。根据需要可以自由组合用户和组的权限
    

二、安装JDK

sudo mkdir /usr/software
sudo chown master /usr/software
cd /usr/software
# Xftp上传jdk到 /usr/software
tar -zxvf jdk-8u271-linux-x64.tar.gz
mv jdk-8u271-linux-x64.tar.gz jdk
# JAVA
export JAVA_HOME=/usr/software/jdk
export JRE_HOME=/usr/software/jdk/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin#测试
java -version#
1.查看环境配置如下图是1.82.在控制台查看jdk版本发现是1.7,这是应为先安装了1.7之后又升级为1.8的,linux系统文件的软连接没有修改,我们只是吧环境配置的指向地址改成了ldk1.8.3.解决方案3.1  which java ——查看默认的jdk安装路径3.2  通过cd命令进入 /usr/bin ,执行sudo rm -rf java (删除默认的java)执行sudo ln -s $JAVA_HOME/bin/java /usr/bin/java (将自己安装的java链接到默认java安装路径下);sudo rm -rf javac (删除默认的javac)执行sudo ln -s $JAVA_HOME/bin/javac /usr/bin/javac (将自己安装的javac链接到默认javac安装路径下)4.查看jdk版本

三、安装hadoop

# HADOOP
export HADOOP_HOME=/usr/software/hadoop
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin#测试
hadoop version

hadoop配置

  1. .在hadoop安装文件根目录创建三个文件夹:tmp hdfs/data hdfs/name

    mkdir tmp
    mkdir -p hdfs/data
    mkdir -p hdfs/name
    

    注:

    tmp:临时文件

    name:NameNode数据块

    ​ 映射信息

    data:DataNode中输出存

    ​ 储位置

  2. 修改hadoop-env.sh文件

    cd /usr/software/hadoop/etc/hadoop
    vim hadoop-env.shexport JAVA_HOME=/usr/software/jdk
    
  3. 修改core-site.xml文件

    vim core-site.xml<configuration><!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --><property><name>fs.default.name</name><value>hdfs://master:9000</value></property><!-- 指定hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/usr/software/hadoop/tmp</value></property>
    </configuration>
  4. 修改hdfs-site.xml文件

    vim hdfs-site.xml<configuration><!-- NameNode命名空间文件 --><property><name>dfs.name.dir</name><value>/usr/software/hadoop/hdfs/name</value></property><!-- DataNode数据文件 --><property><name>dfs.data.dir</name><value>/usr/software/hadoop/hdfs/data</value></property><!-- 文件副本数量 --><property><name>dfs.replication</name><value>1</value></property><!-- Web访问入口 --><property><name>dfs.namenode.http-address</name><value>master:50070</value></property><!-- 文件权限 --><property><name>dfs.permissions</name><value>false</value></property><!-- SecondaryNameNode设置 --><property><name>dfs.secondary.http.address</name><value>master:50090</value></property>
    </configuration>
  5. 将mapred-site.xml.template复制一份,并改名mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
    vim mapred-site.xml
    <!-- 指定mr运行在yarn上 -->
    <property><name>mapreduce.framework.name</name><value>yarn</value>
    </property>
    
  6. 修改yarn-site.xml文件

    vim yarn-site.xml<configuration><!-- Site specific YARN configuration properties --><!-- nodemanager获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property><!-- 指定yarn主节点 --><property><name>yarn.resourcemanager.hostname</name><value>master</value></property></configuration>
  7. 格式化NameNode

    hadoop namenode -format
    
  8. 启动Hadoop

    start-all.sh
    先启动HDFS
    sbin/start-dfs.sh
    再启动YARN
    sbin/start-yarn.sh
    关闭
    stop-all.sh使用jps命令验证
    27408 NameNode
    28218 Jps
    27643 SecondaryNameNode
    28066 NodeManager
    27803 ResourceManager
    27512 DataNodehttp://master:50070(HDFS管理界面)
    http://master:8088 (MR管理界面)
    
  • Hadoop Single Node Cluster 安装完成

四、 Hadoop Multi Node Cluster 安装

  1. 对以上创建的Hadoop Single Node Cluster重新创建hdfs/name hdfs/data

    cd /usr/softwawre/hadoop/hdfs
    rm -rf name
    rm -rf data
    mkdir name
    mkdir data
    
  2. 克隆虚拟机

    • 克隆虚拟机Ubuntu01 到 Ubuntu02 (注:选择完整克隆)
    • 克隆虚拟机Ubuntu01 到 Ubuntu03 (注:选择完整克隆)
    • 修改克隆虚拟机的主机名和IP (sudo vim /etc/hostname)
  3. 配置 /etc/hosts

    对每个节点执行:
    sudo vim /etc/hosts192.168.68.4    master
    192.168.68.5    data1
    192.168.68.6    data2#也可以在本地Windows添加IP映射
    #C:\Windows\System32\drivers\etc\hosts
    
  4. SSH免密登录

    此时三个节点其实是可以相互登录的,因为其他两个节点是复制的master,里面的公私密钥是一样的,并且公钥已经添加到各自的 ~/.ssh/authorized_keys中。但是常规的做法应该是:SSH免密应该在克隆虚拟机之后,操作如下

    #master
    cd ~/.ssh/  #若没有此目录,执行ssh localhost
    ssh-keygen -t rsa
    cat id_rsa.pub >> authorized_keys 
    #data1
    cd ~/.ssh/ 
    ssh-keygen -t rsa
    scp ~/.ssh/id_rsa.pub master@master:~/.ssh/id_rsa.pub.data1
    #data2
    cd ~/.ssh/ 
    ssh-keygen -t rsa
    scp ~/.ssh/id_rsa.pub master@master:~/.ssh/id_rsa.pub.data2
    #master
    cd ~/.ssh
    cat ./id_rsa.pub.data1 >> ./authorized_keys 
    cat ./id_rsa.pub.data2 >> ./authorized_keys 
    scp ~/.ssh/authorized_keys master@data1:~/.ssh/
    scp ~/.ssh/authorized_keys master@data2:~/.ssh/
    #测试
    ssh data1
    ssh data2
    #如果登录失败,尝试更改authorized_keys权限
    chomd 700 ~/.ssh  #仅拥有者有读、写权限
    chmod 600 ~/.ssh/authorized_keys #仅拥有者有读、写、执行权限
    
  5. 配置slaves

    #master@master:/usr/software/hadoop/etc/hadoop$ vim slavescd /usr/software/hadoop/etc/hadoop
    vim slaves
    master
    data1
    data2
    在data1和data2上做同样配置
    
  6. 格式化namenode

    #master
    hadoop namenode -format
    start-dfs.sh  start-yarn.sh        #start-all.sh
    jpsmaster节点中有六个进程
    5840 Jps
    5171 NameNode
    5524 SecondaryNameNode
    5814 NodeManager
    5654 ResourceManager
    5335 DataNode
    data节点中有三个进程
    2962 NodeManager
    3079 Jps
    2829 DataNodestop-dfs.sh and stop-yarn.sh
    
  7. 测试hdfs

    hdfs dfs -mkdir /input
    hdfs dfs -put /usr/software/hadoop/README.txt /inputmaster:50070
    
  8. 测试MapReduce

    #hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar /input /outputhadoop jar /usr/software/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input /outputhdfs dfs -cat /output/*#如果不知道能运行的主函数名称 可以使用:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar 
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 解析淘宝商品详情API返回值中的特殊属性
  • Python和Java及MATLAB和CUDA显微镜导图
  • Vue转React踩坑记录——useEffect组件卸载时使用useState定义的值返回undefined
  • 小琳Python课堂:Python性能测试利器:`timeit`和`memory_profiler`模块的使用与实践
  • Windows 10和11中检查打印文档历史记录的几种方法
  • 职场人,请珍惜每一次发言汇报机会!攻略如下
  • python操作kafka
  • k8s-pod 实战四 什么是 Kubernetes Pod?如何在生产环境中使用它?(学习专场,实战就看这一篇就够了)
  • 一文带你springai+ollama实现chat
  • 华为OD机试真题 - 跳马 - 广度优先搜索BFS(Python/JS/C/C++ 2024 D卷 200分)
  • 计算机网络 第1章
  • AI升降梯人数智能监测摄像头
  • VLM 系列——phi3.5-Vision——论文解读
  • Python Excel 操作全面总结
  • 气膜体育馆:学校体育设施的全新选择—轻空间
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【知识碎片】第三方登录弹窗效果
  • 5、React组件事件详解
  • bearychat的java client
  • docker python 配置
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript异步流程控制的前世今生
  • ReactNativeweexDeviceOne对比
  • sessionStorage和localStorage
  • 翻译:Hystrix - How To Use
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 力扣(LeetCode)965
  • 面试总结JavaScript篇
  • 嵌入式文件系统
  • 异步
  • 用mpvue开发微信小程序
  • #70结构体案例1(导师,学生,成绩)
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (33)STM32——485实验笔记
  • (6)添加vue-cookie
  • (C语言)球球大作战
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (力扣)循环队列的实现与详解(C语言)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (十六)视图变换 正交投影 透视投影
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Remoting学习笔记(三)信道
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET多线程执行函数
  • //TODO 注释的作用
  • @SpringBootConfiguration重复加载报错
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具