首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop3.x伪分布式及Hbase搭建与单词统计项目构建

Hadoop3.x伪分布式及Hbase搭建与单词统计项目构建

作者头像
公众号guangcity
发布2019-09-20 16:21:24
1K0
发布2019-09-20 16:21:24
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

Hadoop3.x伪分布式及Hbase搭建与单词统计项目构建

0.导语

本节从0开始一步步搭建伪分布式及Hbase等。同时学习使用Intellij Maven构建Map-Reduce项目进行单词统计

光城的运行环境为:Ubuntu 16.04。

1.准备工作

JAVA

Hadoop环境需要JAVA环境,所以首先得安装Java,而Ubuntu默认Java为OpenJdk,需要先卸载,再安装Oracle。除此之外,你也可以不用卸载OpenJDK,将Oracle JAVA设为默认的即可。光城的JAVA环境为1.8。

关于JAVA,大家可以到官网下载,这里给出现在地址,根据不同的系统选择版本!

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

关于java配置只要输入java或者javac看到输出,即可配置正确,记得配入Path中!

用户

在Ubuntu或者类Unix系统中,用户可以通过下列命令添加创建用户:

sudo useradd -s /bin/bash -g hadoop -d /home/hadoop -m hadoop

如果提示hadoop不再sudoers文件中,执行下列命令:

vi /etc/sudoers

编辑上述文件:

# User privilege specification  
root    ALL=(ALL:ALL) ALL  
hadoop    ALL=(ALL:ALL) ALL  # 添加此行

再执行上述命令:

light@city:~$ sudo useradd -s /bin/bash -g hadoop -d /home/hadoop -m hadoop
useradd:“hadoop”组不存在

添加用户组:

light@city:/home$ sudo groupadd hadoop

再次执行即可:

light@city:~$ sudo useradd -s /bin/bash -g hadoop -d /home/hadoop -m hadoop

设置或修改密码:

sudo passwd hadoop

SSH

安装ssh

sudo apt-get install openssh-server

配置免密登陆

su - hadoop
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

然后输入

ssh localhost 

此时不需要输入密码,说明成功!

2.伪分布式

Hadoop

  • 下载及安装

在下列镜像中下载Hadoop版本,我下载的3.0.2。大家可以自行选择版本!

https://mirrors.cnnic.cn/apache/hadoop/common/

wget https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-3.0.2/hadoop-3.0.2.tar.gz
tar zxvf hadoop-3.0.2.tar.gz
sudo mv hadoop-3.0.2 /usr/local/hadoop
  • 配置

编辑etc/hadoop/core-site.xmlconfiguration配置为

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

重要点!一定要看本机的9000端口是否被占用,如果被占用了,后面就启动不出来NameNode!

关于查看本机的9000端口是否被占用:

sudo netstat -alnp | grep 9000

会发现9000端口被php-fpm给占用了,所以这里得修改为其他端口,比如我修改为9012,然后可以再次执行这个命令,会发现没被占用,说明可行!

编辑etc/hadoop/hdfs-site.xmlconfiguration配置为

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
  • 初始化

格式化HDFS

bin/hdfs namenode -format

格式化执行一次即可!

启动NameNode和DataNode

sbin/start-dfs.sh

这时在浏览器中访问http://localhost:9870/,可以看到NameNode相关信息。

http://localhost:9864/查看DataNode相关信息。

由于hadoop3.x版本与2.x版本监听端口不一样,所以如果还是原先的50070便访问不到相关信息,所以如果你不知道上述9870或者9864,没关系,可以通过下面命令查看!

输入netstat命令即可查看tcp监听端口:

sudo netstat -ntlp

上述两个重要端口,9864后面可以看到进程ID为17270,通过JPS查看可以看到对应DataNode,9870类似方法,就不在多说了。

  • 配置YARN

编辑etc/hadoop/mapred-site.xmlconfiguration配置为

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

编辑etc/hadoop/yarn-site.xmlconfiguration配置为

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
  • 启动YARN
sbin/start-yarn.sh

查看进程:

Jps
NodeManager
SecondaryNameNode
NameNode
ResourceManager
DataNode

没错,YARN就是上述的资源管理:ResourceManager。

同理,可以通过上述方法查看ResourceManager的端口,默认为8088。

浏览器输入:http://localhost:8088/cluster

  • 启动与停止

启动:

sbin/start-dfs.sh
sbin/start-yarn.sh

停止:

sbin/stop-dfs.sh
sbin/stop-yarn.sh

至此,伪分布式搭建完毕!后面开始HBase与Phoenix搭建!

HBase

  • 下载安装

https://mirrors.cnnic.cn/apache/hbase/

wget https://mirrors.cnnic.cn/apache/hbase/stable/hbase-1.4.9-bin.tar.gz
tar zxvf hbase-1.4.9-bin.tar.gz
sudo mv zxvf hbase-1.4.9-bin /usr/local/hbase
  • 单机HBase配置

编辑conf/hbase-site.xmlconfiguration配置为

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9012/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/zookeeper</value>
  </property>
</configuration>
  • 启动
bin/start-hbase.sh

jps查看进程:

HMaster
Jps
  • 终端
bin/hbase shell

如果想要关闭HBase,则输入:

bin/stop-hbase.sh
  • HBase伪分布式配置

编辑conf/hbase-site.xmlconfiguration添加

<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>

然后修改root由本地文件系统到HDFS,编辑conf/hbase-site.xmlhbase.rootdir值由

file:///home/hadoop/hbase

修改为

hdfs://localhost:9012/hbase

注意后面的端口号9012,需要保证与Hadoop DFS配置中的fs.defaultFS相同!

这样子修改后,会在hdfs文件系统中看到HBase目录,当然你也可以不用配置此项!

上述配置完毕后,保存后,重启HBase即可!

封装

每次启动这些输入太多命令,太繁琐,直接一个bash脚本搞定,首先进入/usr/local,然后再运行这个脚本!

启动脚本:

#!/bin/bash
hadoop/sbin/start-dfs.sh
hadoop/sbin/start-yarn.sh
hbase/bin/start-hbase.sh

停止脚本:

#!/bin/bash
hadoop/sbin/stop-dfs.sh
hadoop/sbin/stop-yarn.sh
hbase/bin/stop-hbase.sh

3.单词统计

环境

使用Intellij构建单词统计。

【新建maven项目】

启动Intellij,并新建项目选择Maven!

然后点击下一步,GroupId与ArtifactId随便填写,然后进入下一步,填写项目名字即可!

修改pom.xml

修改pom.xml如下:

<repositories>
    <repository>
        <id>apache</id>
        <url>http://maven.apache.org</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>3.0.2</version>
    </dependency>
</dependencies>

根据自己的hadoop版本修改hadoop-common下面的版本号,其他的可以不用修改!然后放在pom.xml里面即可!

此时会看到Maven projects need to imported,选择Import Changes,稍等片刻,所有的包就被导入完毕。

java项目

src/main/java下面右键新建java class,填写类名为WordCount即可,然后输入下面代码:

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;

public class WordCount {

    public static class TokenizerMapper
            extends Mapper<Object, Text, Text, IntWritable> {

        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<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();

        public void reduce(Text key, Iterable<IntWritable> 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();
        Job job = Job.getInstance(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(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

输入

此时需要对单词统计项目导入数据,在src同级目录下,新建input文件夹,然后右键新建file,输入file.txt。里面输入下面内容:

love fate hehe
love 他 hehe
fate 他 hehe
love 我 hehe
hehe 哈哈 我 你 他 我

这个就是单词统计的源数据!当然你也可以自己修改!

配置

然后点击菜单栏的Run,找到Edit Configurations,修改配置如下图:

最主要就是修改Program arguments内容填写为:input output,这会让项目从 input 目录读数据并将输出结果保存到output 目录!

注意:不要自己新建output!

然后运行WordCount.java,此时就会看到输出结果:

output文件夹下面的part-r-0000即可看到输出结果!
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hadoop3.x伪分布式及Hbase搭建与单词统计项目构建
    • 0.导语
      • 1.准备工作
        • 2.伪分布式
          • 3.单词统计
          相关产品与服务
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档