文档规定:以红色加粗字体表示命令,绿色加粗字体表示文档配置内容

1.所需软件

基础软件
VMware® Workstation 12 Pro
CentOS-6.5-x86_64-bin-DVD1.iso
SecureCRT 7.3(可用XShell,putty等Shell软件替代)
本教程假设读者已安装以上三个软件,在上面的基础上进行分布式开发环境的配置,如若不懂得如何安装上面的软件,请自行百度。

安装好的master节点的设备配置
分布式平台所需软件
从对应官网上下载Hadoop+Zookeeper+HBase完全分布式开发平台所需要的软件包
jdk-8u101-linux-x64.tar.gz
hadoop-2.6.4.tar.gz
eclipse-jee-neon-2-linux-gtk-x86_64.tar.gz
hadoop-eclipse-plugin-2.6.4.jar
zookeeper-3.4.9.tar.gz
hbase-1.2.4-bin.tar.gz

2.配置基础集群

本部分包括:
2.1 SecureCRT的使用
2.2 jdk的配置
2.3集群的连接
2.4 SSH互信的配置
在VMware Workstation中新建虚拟机, 将虚拟机命名为hadoop待用(建议设置密码的时候尽量简单,因为密码经常要输入,太长了输入很烦,具体步骤自行百度)。
已经安装好的CentOS 6.5的系统如下

输入自己的密码后可进入CentOS系统

2.1 SecureCRT的使用

进入系统后右键点击进入Open in Terminal进入终端,
输入 ifconfig 再按回车键查看CentOS的ip地址


得到本机的ip为 192.168.60.147
使用SecureCRT软件连接到CentOS
打开软件点击File目录下的Quick Connect

输入CentOS的ip地址和用户名,点击Connect

输入password,点击Save password 再点OK按钮即可连接到CentOS了

已连接到的CentOS

2.2安装jdk

在用户名为hadoop的前提下进行配置可直接复制下面的命令(红色)和配置文件(绿色)
(1)使hadoop成为sudoer(获取root权限)
su
cd /etc
vi sudoers


i 进入编辑状态
在root ALL=(ALL) ALL的下一行编辑
hadoop ALL=(ALL) ALL

ESC
Shift + :
输入 wq! 按回车键保存并退出

su hadoop 回到hadoop用户

输入cd 回到/hom/hadoop目录

创建新文件夹hadoop用于存放jdk, hadoop等文件
mkdir hadoop

将Windows下的jdk文件拖入到新建的hadoop文件夹下

拖入的结果

进入hadoop目录,解压jdk文件
cd hadoop/
tar –zxvf jdk-
(按tab键会自动补全)

解压完毕

接下来要配置java环境变量
su
输入密码
vi /etc/profile


i 键进入插入模式
进入后在最后一行添加以下指令:
export JAVA_HOME=/home/hadoop/hadoop/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


编辑后保存退出
输入以下指令使jdk生效:
source /etc/profile
检查jdk是否安装成功
java -version
成功后显示如下信息:

回到hadoop用户,删除hadoop目录下的jdk安装包
su Hadoop
rm jdk-8u
(按tab键自动补齐)

2.3集群的连接

2.3.1.克隆虚拟机

将已经安装好jdk的虚拟机克隆两个,创建三个虚拟机的集群。

克隆的时候要注意在克隆类型选择时要选择创建完整克隆

2.3.2.修改hostname

su
vi /etc/sysconfig/network


将三个虚拟机分别命名master、slave1、slave2
如图:(完成后重启虚拟机reboot)

对其他的两个slave节点也进行相应的操作
分别将hostname设置为slave1和slave2

2.3.3.将三个虚拟机的ip地址相互连接

首先必须确保虚拟机联网,如果NAT模式连不上网,则选中桥接模式。
网络通畅后执行以下操作:
(1)分别对三个虚拟机执行指令ifconfig,查看各虚拟机ip地址
(2)在master中执行以下指令
su
cd /etc
vi /etc/hosts


进入编辑界面后按“IP地址 hostname”填写信息,如图:

(3)将配置好的文件复制到slave1、slave2中
在master中执行以下指令:
scp /etc/hosts root@slave1:/etc/
scp /etc/hosts root@slave2:/etc/


(4)检查各虚拟机是否互联
在master中执行以下指令:
ping slave1
ping slave2

连通后显示如下:

2.4配置SSH无密钥登录

2.4.1关闭防火墙

对每个虚拟机进行如下操作:
su
chkconfig iptables off

执行后重启虚拟机: reboot

2.4.2关闭防火墙后在master下执行以下指令:

cd
ssh-keygen –t rsa
cd .ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
scp authorized_keys hadoop@slave1:~/.ssh/
scp authorized_keys hadoop@slave2:~/.ssh/



输入
ssh slave1 进行无密码登录slave1节点

3.安装并配置hadoop-2.6.4(在master中)

3.1将hadoop-2.6.4.tar.gz安装包复制到hadoop文件目录下(与windows环境下类似)。

3.2解压hadoop-2.6.4.tar.gz

cd
cd hadoop
tar -zxvf hadoop-2.6.4.tar.gz

3.3配置hadoop-2.6.4的各项文件

cd
cd hadoop/hadoop-2.6.4
cd etc/hadoop
vi hadoop-env.sh


在最后一行添加:export JAVA_HOME=/home/hadoop/hadoop/jdk1.8.0_101

vi core-site.xml
添加代码(在<configuration></configuration>之间添加):

<property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
        <final>true</final>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoop/tmp</value>
    </property>
    <property>
        <name>ds.default.name</name>
        <value>hdfs://master:54310</value>
        <final>true</final>
</property>

vi hdfs-site.xml
添加代码:

<property>
   <name>dfs.namenode.name.dir</name>
   <value>file:///home/hadoop/hadoop/dfs/name</value>
   <final>true</final>
</property>
<property>
   <name>dfs.datanode.data.dir</name>
   <value>file:///home/hadoop/hadoop/dfs/data</value>
   <final>true</final>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>


cat mapred-site.xml.template >> mapred-site.xml
vi mapred-site.xml

添加代码:


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

vi yarn-site.xml
添加代码:

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>  
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>master:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
</property>

vi master
添加代码:
master
vi slaves
添加代码:
master
slave1
slave2

3.4将配置好的文件复制到slave1、slave2中

cd
cd hadoop
scp -r hadoop-2.6.4 slave1:~/hadoop
scp -r hadoop-2.6.4 slave2:~/hadoop

3.5启动集群

cd
cd hadoop/hadoop-2.6.4
bin/hdfs namenode -format // 格式化namenode
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/hadoop-daemon.sh start secondarynamenode

也可以使用
sbin/start-all.sh
代替上面的三行启动hadoop的命令
使用
sbin/stop-all.sh
可关闭hadoop

3.6检查集群情况

jps


4.第一个hadoop程序WordCount

接下来将eclipse及hadoop-eclipse插件拖入到CentOS系统中,测试第一个Hadoop程序WordCount

4.1解压eclipse安装包

cd hadoop/
tar -zxvf eclipse-jee-neon-2-linux-gtk-x86_64.tar.gz

4.2将hadoop-eclipse-plugin-2.6.4.jar移到解压好的eclipse文件夹下的plugins目录下

mv hadoop-eclipse-plugin-2.6.4 eclipse/plugins/

4.3点击eclipse图标打开eclipse

4.4选择工作空间

4.5选择eclipse的perspective

点击window->perspective->open perspective->other选择要打开的Map/Reduce perspective

4.6 选择hadoop的安装目录

点击Window->Preferences设置界面

点击Hadoop Map/Reduce
再点击Browse浏览hadoop文件目录

选中hadoop-2.6.4的安装目录,点击OK

4.7新建Map/Reduce Location

在eclipse的控制台选择Map/Reduce Locations
右键
选择New Hadoop location

填写location name 为 hadoop(可任意填写)
Host为master(根据本机的hostname来填写)
Port为9000(固定端口)
点击Finish即完成Hadoop location的配置

4.8上传分析的文本文件

在Project Explorer中双击DFS Locations即可连接已配置好的Hadoop Locations


在图形桌面中新建a.txt文件,输入若干文字

在hadoop的空白目录下按右键新建文件夹input
把a.txt文件上传到input目录下

4.9新建Map/Reduce Project WordCount

新建Project, 选择为Map/Reduce Project

包名和类名如下

将hadoop-2.6.4/etc/hadoop目录下的
core-site.xml
hdfs-site.xml
log4j.properties
文件复制到WordCount工程的src目录下


WordCount的源码如下


package com.jxufe.yr.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;
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);
        }
        @SuppressWarnings("deprecation")
        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);
        for (int i = 0; i < otherArgs.length - 1; ++i) {
            FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
        }
        FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }

}

配置WordCount

下图箭头1处输入分析文件的路径
下图箭头1处输入分析文件的结果的路径
点击Run即可运行程序

在DFS Locations中可查询分析结果
如下图所示

5.安装配置zookeeper-3.4.9

将zookeeper-3.4.9的压缩包拖到hadoop文件夹下
解压zookeeper-3.4.9至hadoop文件夹下(解压文件的代码jdk配置及hadoop配置处有相信命令,可参考上面的命令,从配置zookeeper开始不再提供解压命令)

5.1增加zookeeper的环境变量

进入root用户,用vi编辑器编辑/etc/profile文件
su root
vi /etc/profile


在/etc/profile文件的末尾加上zookeeper的环境变量,保存后退出
export ZOOKEEPER_HOME=/home/hadoop/hadoop/zookeeper-3.4.9
export PATH=$ZOOKEEPER_HOME/bin:$PATH


使用source命令使配置的环境变量生效
source /etc/profile

5.2修改zoo.cfg配置文件

cd /hadoop/zookeeper-3.4.9/conf/
cat zoo_sample.cfg >> zoo.cfg
vi zoo.cfg


在zoo.cfg文件中修改dataDir为如下路径
dataDir=/home/hadoop/hadoop/zookeeper-3.4.9/data
并且增加下面的server信息
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888


保存后退出

5.3新增myid文件

在zookeeper-3.4.9目录下新建data文件夹
再在新建的data文件夹下面新建myid文件
将master下面的myid的值填为0 与zoo.cfg配置文件的server相对应
mkdir data
cd data
vi myid


5.4复制配置好的zookeeper到slave1和slave2节点

复制zookeeper-3.4.9文件夹到slave1和slave2中,并修改myid文件的内容分别为为1和2
scp –r zookeeper-3.4.9/ slave1:~/hadoop
scp –r zookeeper-3.4.9/ slave2:~/hadoop

修改myid的命令与上面创建的命令一样,不同的是要在slave1和slave2节点中进行操作

5.5启动zookeeper

分别在master slave1 slave2中启动zookeeper, 它们三个节点之间会进行投票最终选出leader
启动命令
bin/zkServer.sh start
关闭命令
bin/zkServer.sh stop
查看状态命令
bin/zkServer.sh status
在三台虚拟机启动zookeeper的顺序可任意,但三台都要启动

使用ssh 命令可切换至slave1或slave2机器,
重复上述步骤,将slave1和slave2的zookeeper服务开启
开启后使用logout命令退出可回到master机器
使用zkServer.sh status命令可查看机器的状态

至此,zookeeper的配置已经完成

6.HBase-1.2.4的配置

6.1将HBase-1.2.4的压缩包拖进CentOS的hadoop目录下,解压,解压后删除压缩包

6.2拷贝Hadoop的hdfs-site.xml和core-site.xml放到hbase/conf目录下

6.3配置HBase的环境变量

进入root权限
su
编辑/etc/profile文件
vi /etc/profile
使改变的环境变量生效
source /etc/profile

6.4配置hbase-env.sh文件

cd
cd hadoop/hbase-1.2.4/conf/
vi hbase-env.sh


修改JAVA_HOM的路径
export JAVA_HOME=/home/hadoop/hadoop/jdk1.8.0_101

将HBase自带的zookeeper改为false,使用自己配置的zookeeper
export HBASE_MANAGES_ZK=false

6.5配置hbase-site.xml文件


cd
cd hadoop/hbase-1.2.4/conf/
vi hbase-site.xml

在configuration之间加入以下代码

<property>    
        <name>hbase.rootdir</name>                              
        <value>hdfs://master:9000/hbase</value>        
    </property>      
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>hdfs://master:6000</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
</property>

6.6配置regionservers文件

cd
cd Hadoop/hbase-1.2.4/conf/
vi regionservers


master
slave1
slave2

6.7将配置好的hbase文件复制到slave1 slave2节点中


scp -r hbase-1.2.4/ slave1:~/hadoop

6.8修改各节点hadoop的xievers参数

需要在每个节点中都修改该参数
dfs.datanode.max.xcievers 参数说明
表示Hadoop HDFS Datanode 有一个同时处理文件的上限。默认是256,至少配置为4096。
cd hadoop/hadoop-2.6.4/etc/hadoop/
vi hdfs-site.xml


在configuration之间加入如下代码

<property>
    <name>dfs.datanode.max.xcievers</name>
    <value>4096</value>
</property>

在master节点中
开启HBase的命令 start-hbase.sh
关闭HBase的命令 stop-hbase.sh

6.9启动集群

Hadoop Zookeeper HBase的
启动顺序为:
Hadoop->Zookeeper->HBase
关闭顺序为:
HBase->Zookeeper->Hadoop
启动和关闭请严格按照上顺序进行

进入HBase shell界面,查看HBase集群的状态
可以看到,有一个活跃的master节点和3个server节点

至此HBase已经配置完毕

#此教程到这里已经结束,此文以命令行+截图的形式详细的记录了Hadoop-2.6.4+Zookeeper-3.4.9+Hbase-1.2.4分布式开发平台的环境配置过程,希望能对大家有所帮助。

文章pdf版下载:
CSDN:http://download.csdn.net/download/young2018/9817138
百度网盘:https://pan.baidu.com/s/1i65HBPN 密码:d7op

Leave a Reply

Your email address will not be published. Required fields are marked *