大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行

一、Win10 VMware虚拟机 安装Ubuntu18.04

详细步骤:https://blog.csdn.net/lzbmc/article/details/90757592

Tips:

安装了VMware Tools:可以在宿主机和虚拟机之间直接拷贝文件。

会弹出VMWareTools所在的文件夹,然后右键VMWare Tools.tar.gz,copy to到Home目录下。

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第1张图片

输入解压命令:sudo tar -xzvf  VMwareTools-10.3.10-12406962.tar.gz 就出现左边解压文件

进入解压目录:cd vmware-tools-distrib

安装: sudo ./vmware-install.pl 不断回车——安装成功,重启

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第2张图片

二、创建hadoop用户

1、创建一个Hadoop用户,用户名和密码都是hadoop

sudo adduser hadoop

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第3张图片

2、在创建hadoop用户的同时也创建了hadoop用户组,下面我们把hadoop用户加入到hadoop用户组

sudo usermod -a -G hadoop hadoop 

前面一个hadoop是组名,后面一个hadoop是用户名。完成后输入一下命令查询结果。

cat  /etc/group

3、为hadoop用户添加权限

输入:sudo gedit /etc/sudoers   回车,打开sudoers文件

给hadoop用户赋予和root用户同样的权限,保存

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第4张图片

三、JDK安装配置

OpenJDK 8

更新: sudo apt-get update

安装:sudo apt-get install openjdk-8-jdk

配置openJDK环境变量:只有一个jdk没有配置

sudo vi /etc/profile

增加以下设置: 按a或者i进入写入模式

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

export JRE_HOME=${JAVA_HOME}/jre

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

export PATH=${JAVA_HOME}/bin:$PATH

ESC退出编辑

:wq保存退出

保存退出之后输入:

source /etc/profile 使更改生效

echo $PATH  或者 echo $JAVA_HOME 验证一下路径

验证

注销重新登陆一下, 输入java -version, 提示如下则成功

openjdk version "1.8.0_151"

OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1~deb9u1-b12)

OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

四、SSH无密码登录设置

sudo apt-get install openssh-server   #安装SSH server

ssh localhost                         #登陆SSH,第一次登陆输入yes

### The authenticity of host 'localhost (127.0.0.1)' can't be established.

### 删除rm -rf /home/hadoop/.ssh/known_hosts 重新 ssh localhost

exit           #退出登录的ssh localhost

cd ~/.ssh/    #如果没法进入该目录,执行一次ssh localhost  ### ls 会看到有 known_hosts

ssh-keygen -t rsa     ## 一直回车

cat ./id_rsa.pub >> ./authorized_keys #加入授权  # 要在ssh目录下

        # hadoop@ubuntu:~/.ssh$ cat ./id_rsa.pub >> ./authorized_keys

ssh localhost #此时已不需密码即可登录localhost.如果失败则可以搜索SSH免密码登录来寻求答案

五、Hadoop3安装

1、下载hadoop-3.1.2.tar.gz 到桌面:https://hadoop.apache.org/releases.html

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第5张图片

sudo tar -zxvf  ~/Desktop/hadoop-3.1.2.tar.gz -C /usr/local #解压到/usr/local目录下

cd /usr/local

sudo mv ./hadoop-3.1.2/ ./hadoop          # 重命名为hadoop

sudo chown -R hadoop ./hadoop             # 修改文件权限

2、给hadoop配置环境变量,将下面代码添加到.bashrc文件:

sudo vi ~/.bashrc

export HADOOP_HOME=/usr/local/hadoop

export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

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

3、执行source ~/.bashrc使设置生效,并查看hadoop是否安装成功
cd /usr/local/hadoop/

hadoop version

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第6张图片

六、伪分布式配置

【Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xmlHadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。】

1、修改hadoop-env.sh——Hadoop环境变量设置

sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

或者 sudo vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh

(a:进入编辑模式;ESC:结束编辑模式; :wq :退出)

可以直接 cd /usr/local/hadoop/etc/hadoop/

2、修改core-site.xml   主要完成NameNode的IP和端口设置

/usr/local/hadoop/etc/hadoop$ sudo vi core-site.xml



    

        hadoop.tmp.dir

        file:/usr/local/hadoop/tmp

        Abase for other temporary directories.

    

    

        fs.defaultFS

        hdfs://localhost:9000

    

这里使用的是hdfs://localhost:9000即hdfs文件系统,例如还有淘宝的tfs://,谷歌的gfs://以及本地的file://

3、修改hdfs-site.xml  主要完成HDFS的数据块副本等参数设置

/usr/local/hadoop/etc/hadoop$ sudo vi hdfs-site.xml



    

        dfs.replication

        1

    

    

        dfs.namenode.name.dir

        file:/usr/local/hadoop/tmp/dfs/name

    

    

        dfs.datanode.data.dir

        file:/usr/local/hadoop/tmp/dfs/data

    

其分别为设置blocks副本备份数量、设置NameNode数据存储目录、设置DataNode数据存储目录。dfs.replication就是指备份的份数,1。

(看情况而定用不用的到:sudo vi mapred-site.xml

  

       mapred.job.tracker

       localhost:9001

  

4、NameNode 的格式化: (切到/usr/local/hadoop
/usr/local/hadoop$ ./bin/hdfs namenode –format   执行一次

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第7张图片

5、启动namenode和datanode守护进程

./sbin/start-dfs.sh

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第8张图片

6、验证开启成功 jps

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第9张图片

成功启动后,可以访问 HDFS的Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第10张图片

7、运行Hadoop伪分布式实例 –Wordcount(命令运行自带jar,下面有通过eclipse运行,可忽略直接看下面的七)

前面已经配置了Hadoop的环境变量,Hadoop和HDFS的命令已经包含在了系统当中,HDFS有三种shell命令方式:

hadoop fs : 适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统

hadoop dfs : 只能适用于HDFS文件系统

hdfs dfs : 跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

单机模式读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。伪分布式和单机的mapreduce基本上都是一样的,最主要的区别就是该模式下要使用HDFS的文件系统。

  • 要使用 HDFS,首先需要在 HDFS 中创建用户目录:

./bin/hdfs dfs -mkdir -p /user/hadoop

  •  创建输入文件夹   好像加不加/user/hadoop结果一样

./bin/hdfs dfs -mkdir /user/hadoop/input

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第11张图片

  • 创建本地输入文件并上传到HDFS中

本地创建:touch  ~/Desktop/text1.txt

从本地上上传到HDFS中:-put

/usr/local/hadoop$ hdfs dfs -put ~/Desktop/text1.txt /user/hadoop/input

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第12张图片

  • 查看文件列表

./bin/hdfs dfs -ls /目录

  • 执行Wordcount  (text1 : Hello World  text2: Hello Hadoop)

hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/hadoop/input/text1.txt output

  • 查看结果   hdfs dfs -cat output/*

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第13张图片

hdfs dfs -get output ~/Desktop/output  #拷贝到本机

hdfs dfs -rm -r output    # 删除HDFS上的output 文件夹

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第14张图片

  • 再把本地text2.txt上传到HDFS

hdfs dfs -put ~/Desktop/text2.txt input

hdfs dfs -ls input

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第15张图片

hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/hadoop/input/ output

对 input下所有文档进行词频统计

hdfs dfs -cat output/*

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第16张图片

七、安装eclipse

1、下载eclipse包并移动到/opt目录下  https://www.eclipse.org/downloads/

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第17张图片

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第18张图片

sudo mv ~/Desktop/eclipse-committers-2019-03-R-linux-gtk-x86_64.tar.gz /opt

2、将其解压到opt目录下

sudo tar -zxvf eclipse-committers-2018-09-linux-gtk-x86_64.tar.gz -C /opt/

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第19张图片

3、为了便于之后打开eclipse,在桌面上创建一个快捷方式

sudo vim /usr/share/applications/eclipse.desktop

加入:

[Desktop Entry]

Encoding=UTF-8

Name=Eclipse

Comment=Eclipse

Exec=/opt/eclipse/eclipse

Icon=/opt/eclipse/icon.xpm

Terminal=false

StartupNotify=true

Type=Application

Categories=Application;Development;

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第20张图片

4、 更改权限,将eclipse变为可执行文件

sudo chmod u+x /usr/share/applications/eclipse.desktop

5、将其复制到桌面

cp /usr/share/applications/eclipse.desktop ~/Desktop/

6、建立jre软连接(软链接可以理解成快捷方式)

sudo mkdir /opt/eclipse/jre

sudo ln -s /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin /opt/eclipse/jre

7、hadoop-eclipse-plugin插件

在此之前先启动hadoop:start-dfs.sh

通过jps查看NameNode,DataNode,SecondaryNameNode是否都已在运行

我的hadoop version: 3.1.2  也要下载对应的3.1.2版本。没找到,看到网上有说下载2.6.0也可以

下载地址https://github.com/winghc/hadoop2x-eclipse-plugin 解压只要release里面的2.6.0.jar

①复制插件到eclipse安装目录/plugins/ 下:

sudo cp ~/Desktop/hadoop-eclipse-plugin-2.6.0.jar /opt/eclipse/plugins/

②重启Eclipse,左侧的Project Explorer中没有看到DFS Locations。以为jar包不对,建一个项目就可以了。

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第21张图片

这是我的每个人的会不一样

③windows->preferens ->左侧Hadoop Map/Reduce选项,选择 Hadoop 的安装目录(如/usr/local/hadoop,Ubuntu不好选择目录,直接输入)

④Windows->Open Perspective->Other->单击蓝色小象Map/Reduce

此时Eclipse下方输出窗口部分,出现Map/Reduce Locations选项卡,单击右上角的蓝色小象进行编辑

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第22张图片

⑤设置fs.defaultFS路径 为 hdfs://localhost:9000

⑥hadoop.tmp.dir修改路径,和core-site.xml文件配置保持一致(有的教程没写这一步)

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第23张图片

点击finish保存

8、在Eclipse中创建MapReduce项目—WordCount(先打开hadoop)

①创建hadoop项目,点击左上角file—>new—>other或者Project

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第24张图片

②选择map/preduce下面的map/preduce project

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第25张图片Next

③填写项目名称

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第26张图片Finish

④右键点击刚创建的 WordCount 项目,选择 New -> Class

Package 处填写 org.apache.hadoop.examples;在 Name 处填写 WordCount。大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第27张图片

package org.apache.hadoop.examples;
 
import java.io.IOException;
import java.util.StringTokenizer;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
 
public class WordCount {
 
  public static class TokenizerMapper 
       extends Mapper{
 
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();
 
    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }
 
  public static class IntSumReducer 
       extends Reducer {
    private IntWritable result = new IntWritable();
 
    public void reduce(Text key, Iterable values, 
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;
      for (IntWritable val : values) {
        sum += val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }
 
  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    if (otherArgs.length != 2) {
      System.err.println("Usage: wordcount  ");
      System.exit(2);
    }
    Job job = new Job(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

在运行 MapReduce 程序前,还需要执行一项重要操作(也就是上面提到的通过复制配置文件解决参数设置问题):将 /usr/local/hadoop/etc/hadoop 中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties 复制到 WordCount 项目下的 src 文件夹(运行项目也需要)

sudo cp /usr/local/hadoop/etc/hadoop/core-site.xml ~/eclipse-workspace/WordCount/src/

sudo cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml ~/eclipse-workspace/WordCount/src/

sudo cp /usr/local/hadoop/etc/hadoop/log4j.properties ~/eclipse-workspace/WordCount/src/

⑥右键运行WordCount—Run As,选择Run configurations,我的代码路径是通过传参的

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第28张图片

双击java Application,选择WordCount,点击Arguments,第一个是输入路径,第二个是输出路径,输入输出路径中间以一个空格隔开,点击Apply,最后点击run

大数据Hadoop环境配置:Win10 VMware虚拟机 安装Ubuntu18.04 JDK Hadoop 伪分布式配置 wordcount实例运行_第29张图片

注意,如果user/hadoop下有output文件一定要删除

可以把路径写在程序里,这样可以不用配置,直接run on Hadoop

 

HDFS常用命令:http://blog.sanyuehua.net/2017/11/01/Hadoop-HDFS/

 

你可能感兴趣的:(安装与配置)