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 off
    
    ufw 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/sco
    
    
    chmod 修改文件和文件夹读写执行属性
    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.8

2.在控制台查看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.sh
    
    export 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 DataNode
    
    http://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/hosts
    
    192.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 slaves
    
    cd /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
    jps
    
    master节点中有六个进程
    5840 Jps
    5171 NameNode
    5524 SecondaryNameNode
    5814 NodeManager
    5654 ResourceManager
    5335 DataNode
    data节点中有三个进程
    2962 NodeManager
    3079 Jps
    2829 DataNode
    
    stop-dfs.sh and stop-yarn.sh
    
  7. 测试hdfs

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

    #hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar /input /output
    
    hadoop jar /usr/software/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input /output
    
    hdfs dfs -cat /output/*
    
    #如果不知道能运行的主函数名称 可以使用:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar 
    
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值