2021-08-10 Ubuntu下安装配置 Apache Hadoop

Hadoop是Apache基金会旗下的一个开源的分布式计算平台,是基于Java语言开发的,有很好的跨平台特性,并且可以部署在廉价的计算机集群中。用户无需了解分布式底层细节,就可以开发分布式程序,充分利用集群的威力进行高速运算和存储。

Ubuntu 版本: 18.x ~ 20.x

Hadoop版本:3.2.2  (http://hadoop.apache.org/)

1. 安装 JDK

    $ sudo apt-get update
    $ sudo apt-get install openjdk-8-jdk

    $ java -version

    openjdk version "1.8.0_275"
    OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)
    OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

    $ update-alternatives --config java

    There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java


2. 设置 JAVA_HOME

    $ sudo vi /etc/profile

    JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    JRE_HOME=$JAVA_HOME/jre
    CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    export JAVA_HOME JRE_HOME CLASS_PATH PATH

    $ source /etc/profile
    $ echo $JAVA_HOME


3. 安装 Hadoop 到主机

    $ wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz      # 下载 hadoop

    $ mv ./hadoop-3.2.2.tar.gz ~/apps/    # 移动到你想要放置的文件夹
    $ tar -zvxf hadoop-3.2.2.tar.gz    # ~/apps/hadoop-3.2.2

    本地配置 SSH 无密码访问:
    $ cd ~/.ssh
    $ ssh-keygen -t rsa
    $ cat ./id_rsa.pub >> ./authorized_keys
    $ ssh localhsot


4. 配置 Hadoop

    创建 Hadoop用户和组,并授予执行权限

    $ sudo addgroup hadoop
    $ sudo usermod -a -G hadoop xxx   # 将当前用户加入到hadoop组
    $ sudo vim /etc/sudoers          # 将hadoop组加入到sudoer

    在 root ALL=(ALL) ALL  后

    添加一行 hadoop ALL=(ALL) ALL

    $ sudo chmod -R 755 ~/apps/hadoop-3.2.2
    $ sudo chown -R xxx:hadoop ~/apps/hadoop-3.2.2    # 否则ssh会拒绝访问

    $ sudo vim /etc/profile  (增量配置,不要删除之前的 JAVA_HOME ...)

    HADOOP_HOME=/home/xxx/apps/hadoop-3.2.2
    PATH=.$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
    export HADOOP_HOME

    $ sudo source /etc/profile
    $ echo $HADOOP_HOME
   

5. 单机模式运行 Hadoop

    $ hadoop version    # 测试是否配置成功
    $ cd ~/apps/hadoop-3.2.2
    $ mkdir input
    $ cp README.txt input
    $ hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-3.2.2-sources.jar org.apache.hadoop.examples.WordCount input output


6. 伪分布式配置 Hadoop

    $ cd ~/apps/hadoop-3.2.2

    $ vim ./etc/hadoop/hadoop-env.sh

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

    $ vim ./etc/hadoop/core-site.xml

    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/xxx/apps/hadoop-3.2.2/tmp</value>
            <description>Abase for other temporary directories.</description>
        </property>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration>
    *注:路径里的 ‘xxx’ 是 ubuntu 用户的home目录名,下同 

    $ vim ./etc/hadoop/hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
          <name>dfs.http.address</name>
          <value>0.0.0.0:50070</value>
        </property>       
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/home/xxx/apps/hadoop-3.2.2/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/home/xxx/apps/hadoop-3.2.2/tmp/dfs/data</value>
        </property>
    </configuration>

    $ hdfs namenode -format

    $ ./sbin/start-dfs.sh

    遇到报错:localhost: ERROR: JAVA_HOME is not set and could not be found.
    解决方案:其实是hadoop里面hadoop-env.sh文件里面的java路径设置不对,hadoop-env.sh ./etc/hadoop目录下,具体的修改办法如下:   

    $ vim ./etc/hadoop/hdoop-env.sh

    将语句
    export JAVA_HOME=$JAVA_HOME 
    # 也有可能语句为export JAVA_HOME=  (且被注释掉了)

    修改为
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  # 自己的Java home路径,可以在终端输入$JAVA_HOME 查看

    保存后退出,重新执行 ./sbin/start-dfs.sh

    输入jps命令查看是否启动成功, namenode和datanode都要出现才算成功??

    访问 http://localhost:50070 查看节点信息

    关闭hdfs: ./sbin/stop-dfs.sh


7. 配置yarn(可选项)

    $ vim ./etc/hadoop/mapred-site.xml

    <configuration>
            <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
            </property>
    </configuration>


    $ vim ./etc/hadoop/yarn-site.xml

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>

    启动yarn(要先启动了hdfs:start-dfs.sh)

    $ ./sbin/start-yarn.sh


    开启历史服务器,查看历史任务,这样可以在web界面中查看任务运行情况:

    $ ./sbin/mr-jobhistory-daemon.sh start historyserver

    启动成功后可以在 http://localhost:8088/cluster 访问集群资源管理器。

    不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 之后,是 “mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster 。


8. HDFS文件操作

    $ hdfs dfsadmin -report    # 查看信息

    $ hdfs dfs -mkdir /test    # create folder

    $ hdfs dfs -rm -r /test    # delete folder

    $ hdfs dfs -ls -R /        #  recursive list folder

    $ hdfs dfs -put data.txt /test      # put file from local

    $ hdfs dfs -get /test/data.txt      # get file to local


9. 集群/分布式配置 Hadoop

    一台主机 hadoop-master-vm,一台辅机 hadoop-slave-vm,配置主辅机之间SSH无密码访问(把各自的~/.ssh/id_rsa.pub 放入对方的 ~/.ssh/authorized_keys 中)

    1) 主机hadoop-master-vm, 修改/etc/hosts
   
        127.0.0.1    localhost
        #127.0.1.1    hadoop-master-vm

        192.168.0.3    hadoop-master-vm
        192.168.0.4    hadoop-slave-vm
        ...


    2) 辅机hadoop-slave-vm, 修改/etc/hosts
   
        127.0.0.1    localhost
        #127.0.1.1    hadoop-slave-vm

        192.168.0.3    hadoop-master-vm
        192.168.0.4    hadoop-slave-vm
        ...


    3) 修改主机上的 hadoop 配置

        $ cd ~/apps/hadoop-3.2.2

        $ vim ./etc/hadoop/workers

            #localhost
            hadoop-slave-vm


        $ vim ./etc/hadoop/core-site.xml

            <configuration>
                <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/home/xxx/apps/hadoop-3.2.2/tmp</value>
                    <description>Abase for other temporary directories.</description>
                </property>
                <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://hadoop-master-vm:9000</value>
                </property>
            </configuration>


        $ vim ./etc/hadoop/hdfs-site.xml

            <configuration>
                <property>
                    <name>dfs.replication</name>
                    <value>1</value>
                </property>
                <property>
                  <name>dfs.http.address</name>
                  <value>hadoop-master-vm:50070</value>
                </property>       
                <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/home/xxx/apps/hadoop-3.2.2/tmp/dfs/name</value>
                </property>
                <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/home/xxx/apps/hadoop-3.2.2/tmp/dfs/data</value>
                </property>
            </configuration>


        $ vim ./etc/hadoop/mapred-site.xml  # MapReduce 相关

            <configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>hadoop-master-vm:10020</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>hadoop-master-vm:19888</value>
                </property>
            </configuration>


        $ vim ./etc/hadoop/yarn-site.xml

            <configuration>
                <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>hadoop-master-vm</value>
                </property>
                <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
                </property>
            </configuration>

    $ hdfs namenode -format

        把主机的hadoop目录 ~/apps/hadoop-3.2.2 完全同步到辅机上,辅机的JAVA_HOME, HADOOP_HOME 等参考主机的配置。


    4) 在主机上运行

        $ ./sbin/start-dfs.sh
        $ ./sbin/start-yarn.sh
        # $ mr-jobhistory-daemon.sh start historyserver

        (1) 主机上查看节点

            xxx@hadoop-master-vm:~/apps/hadoop-3.2.2$ jps
            6807 NameNode
            7752 ResourceManager
            7082 SecondaryNameNode
            8171 Jps
            8156 JobHistoryServer   

        (2)辅机上查看节点

            xxx@hadoop-slave-vm:~/apps/hadoop-3.2.2$ jps
            2368 remoting.jar
            6192 DataNode
            20802 Jps 

        (3)主辅机上查看report

            $ hdfs dfsadmin -report

                Configured Capacity: 490651459584 (456.95 GB)
                Present Capacity: 410068922368 (381.91 GB)
                DFS Remaining: 410068877312 (381.91 GB)
                DFS Used: 45056 (44 KB)
                DFS Used%: 0.00%
                ...

                -------------------------------------------------
                Live datanodes (1):

                Name: 192.168.0.4:9866 (hadoop-slave-vm)
                Hostname: hadoop-slave-vm
                Decommission Status : Normal
                Configured Capacity: 490651459584 (456.95 GB)
                DFS Used: 45056 (44 KB)
                Non DFS Used: 55587368960 (51.77 GB)
                DFS Remaining: 410068877312 (381.91 GB)
                DFS Used%: 0.00%
                DFS Remaining%: 83.58%
                ...


10. Web UI

    1) Hadoop node overview

        http://hadoop-master-vm:50070/
   
    2) Hadoop cluster
   
        http://hadoop-master-vm:8088/ 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,001评论 6 537
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,786评论 3 423
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 176,986评论 0 381
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,204评论 1 315
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,964评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,354评论 1 324
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,410评论 3 444
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,554评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,106评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,918评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,093评论 1 371
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,648评论 5 362
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,342评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,755评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,009评论 1 289
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,839评论 3 395
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,107评论 2 375

推荐阅读更多精彩内容