hadoop 单节点模式安装

概要

    hadoop 单节点模式安装

   

一、系统安装

    1、工具环境

        (1)虚拟机:VMware woekstation 16 Player

            程序:VMware-player-full-16.2.3-19376536.exe

            官网:https://www.vmware.com/

            下载地址:https://www.vmware.com/cn/products/workstation-player.html

            https://customerconnect.vmware.com/cn/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/16_0

            https://www.vmware.com/cn/try-vmware.html

        (2)操作系统

            操作系统:ubuntu的桌面版

            程序版本:ubuntu-20.04.4-desktop-amd64.iso

            下载地址:https://ubuntu.com/#download

    2、系统安装

        (1)使用简易安装

            账号:hadoopsingle

            虚拟机名称:hadoopsingle

            虚拟机位置选择D盘:D:\Virtual Machines\hadoopsingle

            分配磁盘100G,内存8G,cpu8核,选择磁盘为单个磁盘,网络选择桥接模式,其他默认

    (2)安装Ubuntu

            使用笔记本安装的,使用无线网络上网,通过虚拟机软件将络连接选择桥接模式,勾选或不勾选复制物理网络连接都可以;

            激活root账号并设置密码,sudo  passwd  root ,输入root密码即可;

            更新所有软件

            apt update

            apt upgrade

            如何在VMware虚拟机的Ubuntu下实现与windows系统的文件(文字)互相复制粘贴

            1.sudo apt autoremove open-vm-tools

            2.sudo apt install open-vm-tools-desktop

            3.重启系统即可

            若复制失效或者报错,可使用以下办法解决:

            1.apt -f install

            2.reboot

            配置windows主机和ubuntu虚拟机文件通过ftp传输

            安装查看虚拟机IP程序

            sudo apt install net-tools

            查看IP

            ifconfig -a

            查看ftp服务

            ps -ef|grep ftp

            安装ftp服务

            sudo apt install vsftpd

            查看ftp版本

            vsftpd -version

            修改vsftpd.conf配置文件

            安装vim编辑器

            sudo apt install vim

            sudo vim  /etc/vsftpd.conf

            去掉如下两个内容的注释通常在28和31行

            local_enable=YES

            write_enable=YES

            重启ftp服务

            sudo /etc/init.d/vsftpd restart

            windows安装和配置FileZilla

            FileZilla 客户端下载和安装

            FileZilla工具可以去官网下载即可,https://www.filezilla.cn/download

            安装配置即可

            FileZilla或者SecureCRT连接虚拟机过慢的解决方法

            问题原因:

            当我们更换网络环境时,可能会发现终端工具连接Linux虚拟机的速度变得很慢,这是因为ssh的服务端在连接时会自动检测dns环境是否一致导致的

            解决方案

            我们把它修改为不检测

            修改文件位置:vim /etc/ssh/sshd_config

            把

            #UseDNS yes

            修改为

            UseDNS no

            然后,重启ssh服务

            systemctl restart sshd

            修改国外apt更新国外镜像源为国内镜像源

            到/etc/apt下面更改sources.list更换国外镜像为国内镜像,是将us的地址换为cn;

            cd /etc/apt

            ls -l

            cat sources.list

            cp sources.list sources.list.bak

            vim sources.list

            将us的地址换成cn的地址(系统22版默认安装已换)

            更新软件列表

            sudo apt update

            更新软件

            sudo apt upgrade

            查看系统版本

            sudo lsb_release -a

二、hadoop安装前提

    1、需要的软件

        (1)jdk

            3.3.3对应jdk目前支持的版本为java8或Java11,编译只能是Java8,所以安装java8;

            链接地址为:https://www.oracle.com/java/technologies/downloads/

            java8下载地址为:https://www.oracle.com/java/technologies/downloads/#java8-linux

            对应版本地址:https://www.oracle.com/webapps/redirect/signon?nexturl=https://download.oracle.com/otn/java/jdk/8u341-b10/424b9da4b48848379167015dcc250d8d/jdk-8u341-linux-x64.tar.gz

            #sudo apt install openjdk-8-jre-headless   # version 8u312-b07-0ubuntu1~20.04

            #apt install openjdk-8-jdk-headless   # version 8u342-b07-0ubuntu1~20.04

            #可以使用ubuntu推荐自带的java8

        (2)hadoop

                目前安装的版本为3.3.3;

                链接地址为:https://dlcdn.apache.org/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz

    2、配置

        (1)ssh免密登录

            查看是否安装ssh

            rpm  -qa  |  grep  ssh

            sudo apt install rpm

            查询ssh安装路径

            which ssh

            usr/bin/ssh

            查询pdsh安装路径

            which pdsh

            #卸载程序和所有配置文件。在终端中输入以下命令,把替换成你希望完全移除的程序:

            #sudo apt --purge remove pdsh

            系统默认没有安装pdsh

            安装SSH,配置SSH无密码登录

            sudo apt install openssh-server

            安装ssh

            apt install ssh

            安装pdsh

            apt install pdsh

            查询ssh安装路径

            which ssh

            usr/bin/ssh

            因为 ssh 默认禁止 root 用户访问,需要修改 sshd_config 文件中的 PermitRootLogin 数据为 yes;

            vim /etc/ssh/sshd_config

            找到:

            # Authentication:

            #LoginGraceTime 2m

            #PermitRootLogin prohibit-password

            修改为:

            PermitRootLogin yes

            再重启sshd服务 ,重启命令:systemctl restart sshd.service

            进入 ~/.ssh/ 目录

            若不存在,需要执行一次

            使命令登陆本机:

            ssh localhost

            输入 yes

            然后按提示输入主机密码

            按四下回车

            再重启sshd服务 ,重启命令:systemctl restart sshd.service

            cd ~/.ssh/

            ssh-keygen -t rsa

            按回车即可

            授权

            cat ./id_rsa.pub >> ./authorized_keys

            查看服务进程

            ps -ef|grep ssh

            下一次连接就不用输入密码了,exit可退出当前主机

            cd /

            cd ~

            ssh localhost

            ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

            cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

            chmod 0600 ~/.ssh/authorized_keys


 

        (2)关闭防火墙

            sudo ufw status: 查看防火墙状态,inactive是关闭状态,active是开启状态

            sudo ufw enable:开启防火墙

            sudo ufw default deny:启动默认防御,作用:关闭所有外部对本机的访问(本机访问外部正常)

            sudo ufw disable:关闭防火墙

            sudo ufw allow|deny [service]:禁用防火墙

            选择关闭状态

        (3)创建用户

            单机版,为了避免权限限制,我们使用root安装,省略创建用户过程;

            useradd hadoop

            passwd hadoop (直接输入两次密码即可)

            注意:我都是用root用户操作,故这一步可以不用切换到hadoop用户。

        (4)修改机器名

            获取主机名:hostname或uname -a

            临时修改主机名,命令行下运行命令:“hostname 新主机名”

            其中“新主机名”可以用任何合法字符串来表示。不过采用这种方式,新主机名并不保存在系统中,重启系统后主机名将恢复为原先的主机名称。

            永久修改主机名,在Ubuntu系统中永久修改主机名也比较简单。主机名存放在/etc/hostname文件中,修改主机名时,编辑hostname文件,在文件中输入新的主机名并保存该文件即可

            查看网卡相关信息:ifconfig

            如果没有,安装:sudo apt install net-tools

            修改/etc/hosts配置文件

            /etc/hosts存放的是域名与ip的对应关系,域名与主机名没有任何关系,你可以为任何一个IP指定任意一个名字。

            修改主机名与IP地址映射关系:vim /etc/hosts

            在最后一行添加 ip地址 主机名,如:192.168.1.252 ubuntu

            修改后重启系统

            sudo reboot

    3、安装jdk

        安装 OpenJDK 8

        sudo apt update

        sudo apt upgrade

        验收是否有jdk安装:java -version

        没有安装

        #sudo apt install openjdk-8-jre-headless   # version 8u312-b07-0ubuntu1~20.04

        #apt install openjdk-8-jdk-headless   # version 8u342-b07-0ubuntu1~20.04

        我自定义安装

        1、下载linux版jdk jdk-8u341-linux-x64.tar.gz

        2、将jdk拷贝到安装目录,jdk存放地址为/opt/jdk/

        3、执行命令 tar -zxvf  jdk-8u341-linux-x64.tar.gz,解压jdk

        首先使用which找到 Java 安装路径:

        which java

        /opt/jdk/jdk1.8.0_341/bin/java

        4、配置环境变量

            sudo vim /etc/profile,文件末尾加上如下环境变量配置

            export JAVA_HOME=/opt/jdk/jdk1.8.0_341

            export JRE_HOME=$JAVA_HOME/jre

            export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

            export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

5       5、重启配置 source /etc/profile

        6、查看是否配置成功。输入命令 java -version

        JAVA_HOME 环境变量

        (1)Java 安装路径

            /opt/jdk/jdk1.8.0_341

        (2)打开/etc/environment文件:

            /** sudo nano /etc/environment

            sudo apt install vim

           sudo vim /etc/environment

            在文件的末尾,添加下面的行:

            JAVA_HOME=/opt/jdk/jdk1.8.0_341

            想要让修改在当前 shell 生效,你可以登出系统,再登入系统,或者运行下面的命令:

            source /etc/environment

            验证 JAVA_HOME 环境变量被正确设置:

            echo $JAVA_HOME

        (3)配置环境变量

            vim  /etc/profile

            在这个文件最后添加如下两行:

            export JAVA_HOME=/opt/jdk/jdk1.8.0_341

            export PATH=$JAVA_HOME/bin:$PATH

            使这个配置文件生效

            source /etc/profile

            验证

            java -version

        (4)root用户如果关闭终端后,依旧没有,支持如下操作

            但是此方法有时退出终端后,再进入终端又会失效,所以可以:

            su root

            cd /root

            vim /root/.bashrc

            //在尾部添加:

            source /etc/profile

4、安装hadoop

    上传或下载hadoop-3.3.3.tar.gz

    #官网下载:hadoop3.3.3

    #wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz

    cp /home/hadoopsingle/Desktop/share/hadoop-3.3.3.tar.gz /opt/hadoop/.

    tar -zxvf /opt/hadoop/hadoop-3.3.3.tar.gz -C /opt/hadoop/

    至目录 /opt/hadoop/

    #重命名 mv hadoop-3.3.3 hadoop

    修改文件权限  sudo chown -R 0600 /opt/hadoop/hadoop-3.3.3

    进入hadoop目录

    cd /opt/hadoop/hadoop-3.3.3

    验证hadoop版本

    ./bin/hadoop version

5、配置env和profile

    配置env文件  修改JDK路径

    vim /opt/hadoop/hadoop-3.3.3/etc/hadoop/hadoop-env.sh

    vim /opt/hadoop/hadoop-3.3.3/etc/hadoop/mapred-env.sh

    vim /opt/hadoop/hadoop-3.3.3/etc/hadoop/yarn-env.sh

    添加:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

    配置环境变量

    vim /etc/profile

    在文件最后添加如下三行

    export JAVA_HOME=/opt/jdk/jdk1.8.0_341

    export HADOOP_HOME=/opt/hadoop/hadoop-3.3.3

    export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

    使这个配置文件生效

    source /etc/profile

    验证

    hadoop version

6、hadoop独立操作配置

    独立操作,默认情况下,Hadoop 配置为以非分布式模式运行,作为单个 Java 进程。这对于调试很有用。

    The following example copies the unpacked conf directory to use as input and then finds and displays every match of the given regular expression. Output is written to the given output directory.

    pwd /opt/hadoop/hadoop-3.3.3

    mkdir input

    cp etc/hadoop/*.xml input

    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar grep input output 'dfs[a-z.]+'

    cat output/*

7、修改核心组件文件

    vim /opt/hadoop/hadoop-3.3.3/etc/hadoop/core-site.xml

    创建临时目录,mkdir tmp

    配置里面添加:

        <configuration>

            <property>

                <name>hadoop.tmp.dir</name>

                <value>file:/opt/hadoop/hadoop-3.3.3/tmp</value>

                <description>Abase for other temporary directories.</description>

            </property>

            <property>

                <name>fs.defaultFS</name>

                <value>hdfs://localhost:9000</value>

            </property>

        </configuration>

8、修改文件系统文件

    vim /opt/hadoop/hadoop-3.3.3/etc/hadoop/hdfs-site.xml

    配置里面添加:

        <configuration>

            <property>

                <name>dfs.replication</name>

                <value>1</value>

            </property>

            <property>

                <name>dfs.namenode.name.dir</name>

                <value>file:/opt/hadoop/hadoop-3.3.3/tmp/dfs/name</value>

            </property>

            <property>

                <name>dfs.datanode.data.dir</name>

                <value>file:/opt/hadoop/hadoop-3.3.3/tmp/dfs/data</value>

            </property>

            <!-- 注释>

            <property>

                <name>dfs.namenode.http-address</name>

                <value>0.0.0.0:50700</value>

            </property>

            <!-->

        </configuration>

9、修改yarn文件

    vim /opt/hadoop/hadoop-3.3.3/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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>

            </property>

            <!--注释>

            <property>

                <name>yarn.resourcemanager.webapp.address</name>

                <value>ubuntu:8088</value>

            </property>

            <property>

                <name>yarn.resourcemanager.hostname</name>

                <value>ubuntu</value>

            </property>

            <property>

                <name>yarn.resourcemanager.address</name>

                <value>ubuntu:8032</value>

            </property>

            <property>

                <name>yarn.resourcemanager.scheduler.address</name>

                <value>ubuntu:8030</value>

            <property>

                <name>yarn.resourcemanager.resource-tracker.address</name>

                <value>ubuntu:8031</value>

            </property>

            <property>

                <name>yarn.resourcemanager.admin.address</name>

                <value>ubuntu:8033</value>

            </property>

            <!-->

        </configuration>

10、修改文件mapreduce文件

        vim /opt/hadoop/hadoop-3.3.3/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>

11、root用户启动hadoop需要的配置

    在start-dfs.sh,stop-dfs.sh 两个文件顶部添加以下参数

    vim /opt/hadoop/hadoop-3.3.3/sbin/start-dfs.sh

    vim /opt/hadoop/hadoop-3.3.3/sbin/stop-dfs.sh

        HDFS_DATANODE_USER=root

        HADOOP_SECURE_DN_USER=hdfs

        HDFS_NAMENODE_USER=root

        HDFS_SECONDARYNAMENODE_USER=root

    在start-yarn.sh,stop-yarn.sh两个文件顶部添加以下参数

    vim /opt/hadoop/hadoop-3.3.3/sbin/start-yarn.sh

    vim /opt/hadoop/hadoop-3.3.3/sbin/stop-yarn.sh

        YARN_RESOURCEMANAGER_USER=root

        HADOOP_SECURE_DN_USER=yarn

        YARN_NODEMANAGER_USER=root

12、配置完成,执行 NameNode 的格式化

    进入目录cd /opt/hadoop/hadoop-3.3.3

    格式化命令./bin/hdfs namenode -format

13、启动 NameNode 守护进程和 DataNode 守护进程

    ./sbin/start-dfs.sh

    浏览 NameNode 的 Web 界面;默认情况下,它位于:默认端口号9870

    http://localhost:9870/,或http://127.0.0.1:9870/,或http://192.168.1.253:9870/;

14、创建执行 MapReduce 作业所需的 HDFS 目录:

    su root

    cd /opt/hadoop/hadoop-3.3.3

    ./bin/hdfs dfs -mkdir /user

    ./bin/hdfs dfs -mkdir /user/root

15、将输入文件复制到分布式文件系统中

    su root

    cd /opt/hadoop/hadoop-3.3.3

    ./bin/hdfs dfs -mkdir input

    ./bin/hdfs dfs -put etc/hadoop/*.xml input

16、运行提供的一些示例

    su root

    cd /opt/hadoop/hadoop-3.3.3

    ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar grep input output 'dfs[az.]+'

17、检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并检查它们

    su root

    cd /opt/hadoop/hadoop-3.3.3

    ./bin/hdfs dfs -get output output

    cat output/*

    或者

    ./bin/hdfs dfs -cat output/*

18、启动 ResourceManager 守护进程和 NodeManager 守护进程

    ./sbin/start-yarn.sh

19、浏览 ResourceManager 的 Web 界面;默认情况下,它位于:

    http://localhost:8088/

20、运行 MapReduce 作业

21、完成后,使用以下命令停止守护进程

    ./sbin/stop-yarn.sh

    ./sbin/stop-dfs.sh

22、hadoop环境变量配置

    Ubuntu搭建hadoop时,在/bin、/sbin等路径下有一些经常使用的工具.为了能够在任何路径下都能使用这些工具,而不必切换到bin/sbin路径下,需要设置hadoop的环境变量(注意:前提是已经设置好jdk环境变量,jdk环境变量参考前面的配置)

    我使用的是root用户,所以进入root用户目录下

    (1)hadoop的安装路径

        /opt/hadoop/hadoop-3.3.3

    (2)打开/etc/environment文件:

        vim /etc/environment

        在文件的末尾,添加下面的行:

        HADOOP_HOME="/opt/hadoop/hadoop-3.3.3"

        想要让修改在当前 shell 生效,你可以登出系统,再登入系统,或者运行下面的命令:

        source /etc/environment

        验证 HADOOP_HOME 环境变量被正确设置:

        echo $HADOOP_HOME

        /opt/hadoop/hadoop-3.3.3

    (3)配置环境变量

        vim  /etc/profile

        在这个文件最后添加如下两行:

        export HADOOP_HOME=/opt/hadoop/hadoop-3.3.3

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

        使这个配置文件生效

        source /etc/profile

        验证

        hadoop version

    (4)root用户如果关闭终端后,依旧没有,支持如下操作

        但是此方法有时退出终端后,再进入终端又会失效,所以可以:

        su root

        cd /root

        vim /root/.bashrc

        //在尾部添加:

        source /etc/profile