0%

Hadoop + HBase 单机安装部署

单机搭建部署 Hadoop 、HBase


前言

之前一直是使用 CDH 。 准备入坑源码。所以想搭建一套 Apache 的来玩玩。

选择的版本:

  • Hadoop: 2.7.7
  • HBase: 1.2.11
  • Linux: CentOs 6.5
  • JDK: jdk1.8.0_161

准备

安装jdk,配置环境变量。 这个网上很多,自行百度。

Hadoop、HBase tar包去官方网站下载即可

下载之后将其解压。

配置 Hadoop 环境变量

1. 配置hadoop-env.sh、yarn-env.sh

在Hadoop安装目录下 etc/hadoop

在 hadoop-env.sh、yarn-env.sh

加入 export JAVA_HOME=/usr/local/jdk1.8.0_161(jdk安装路径)

保存退出

2. 配置HADOOP_HOME

修改全局环境变量

在 /etc/profile

export HADOOP_HOME=/opt/hadoop-2.7.3 # Hadoop的安装路径

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

配置基本相关xml

core-site.xml
1
2
3
4
5
6
7
8
9
10
11
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>数据需要备份的数量,不能大于集群的机器数量,默认为3</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/dfs/nn</value>
       <description>namenode上存储hdfs名字空间元数据</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/dfs/dn</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>localhost:9001</value>
<description>SecondaryNameNode HTTP 端口。如端口为 0,服务器将在自由端口启动。</description>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
<description>设置为true,可以在浏览器中IP+port查看</description>
</property>
</configuration>
mapred-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<configuration>
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
<description>mapreduce运用了yarn框架,设置name为yarn</description>
    </property>
    <property>
      <name>mapreduce.jobhistory.address</name>
      <value>localhost:10020</value>
<description>历史服务器,查看Mapreduce作业记录</description>
    </property>
    <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>localhost:19888</value>
<description>MapReduce JobHistory Web 应用程序 HTTP 端口</description>
    </property>
</configuration>
yarn-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<configuration>
<property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
<description>NodeManager上运行的附属服务,用于运行mapreduce</description>
    </property>
    <property>
      <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
<description>MapReduce JobHistory Web 应用程序 HTTP 端口</description>
    </property>
    <property>
      <name>yarn.resourcemanager.address</name>
      <value>localhost:8032</value>
<description>ResourceManager 对客户端暴露的地址</description>
    </property>
    <property>
      <name>yarn.resourcemanager.scheduler.address</name>
      <value>localhost:8030</value>
<description>ResourceManager 对ApplicationMaster暴露的地址</description>
    </property>
    <property>
      <name>yarn.resourcemanager.resource-tracker.address</name>
      <value>localhost:8031</value>
<description>ResourceManager 对NodeManager暴露的地址</description>
    </property>
    <property>
      <name>yarn.resourcemanager.admin.address</name>
      <value>localhost:8033</value>
<description>ResourceManager 对管理员暴露的地址</description>
    </property>
    <property>
      <name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
<description>ResourceManager 对外web暴露的地址,可在浏览器查看</description>
    </property>
</configuration>

Hadoop的启动与停止

1. 格式化namenode

bin/hadoop namenode -format

出现 successfully formatted 即可

2. 启动 HDFS、YARN

一起启动

sbin/start-all.sh

也可以分开启动

sbin/start-dfs.sh

sbin/start-yarn.sh

3. 验证

在命令行输入 jps 可以看到启动的 Java 进程,接着在看看是否有 HDFS、Yarn 的角色

在浏览器中输入http://{ip}:50070 查看 NameNode 状态。 ip 为你安装的机器 IP

4. 停止

停止hadoop,进入Hadoop目录下,输入命令:

sbin/stop-all.sh。

同样也可以分开停止的。

sbin/stop-dfs.sh

sbin/stop-yarn.sh

HBase

1. 配置HADOOP_HOME

在 /etc/profile 中加入

export HBASE_HOME=/opt/hbase-1.2.11

export PATH=$HBASE_HOME/bin:$PATH

2. hbase-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<configuration>
<property>
       <name>hbase.rootdir</name>
       <value>hdfs://localhost:8020/hbase</value>
       <!-- 端口要和Hadoop的fs.defaultFS端口一致-->
<!-- hbase存放数据目录 -->
    </property>
    <property>
      <name>hbase.cluster.distributed</name> <!-- 是否分布式部署 -->
       <value>false</value>
    </property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hadoop/hbase/tmp</value>
<description>hbase临时文件目录</description>
</property>
    <property>
       <name>hbase.zookeeper.quorum</name> <!-- list of zookooper -->
       <value>localhost</value>
    </property>    
    <property>
       <name>hbase.zookeeper.property.dataDir</name>
       <value>/opt/hadoop/hbase/zookeeper</value>
<description>zookooper配置、日志等的存储位置</description>
    </property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
</configuration>
3. hbase-env.sh

使用 HBase 自带的zookeeper

export HBASE_MANAGES_ZK=true

指定 JDK

export JAVA_HOME=/usr/local/jdk1.8.0_161(jdk安装路径)

启动与停止Hbase

在Hadoop已经启动成功的基础上,输入 start-hbase.sh ,过几秒钟便启动完成。

输入jps命令查看进程是否启动成功,若 机器 上出现 HMaster 即可。 (不知道为什么。我这里没有出现 HQuorumPeer,不知道是不是版本的原因)

输入 hbase 可以看到支持的命令服务。 zkcli 是进入 HBase 自带的 zk 的命令

输入 hbase shell 命令 进入 HBase 命令模式

在浏览器中输入http://{ip}:16010 就可以在界面上看到 HBase 的配置了

当要停止hbase时输入stop-hbase.sh,过几秒后hbase就会被停止了。

总结

这只是简易版的。生产环境的要求肯定不止这些。参考者请注意。

这里有个地方没弄懂。尝试过配置 HBase Master 的端口为 16000。 发现未生效。端口是随机的。。。
没想明白为什么。等看下源码找找原因。

附上 HBase 端口设置参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
hbase-site.xml

<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>

<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>

<property>
<name>hbase.regionserver.port</name>
<value>16201</value>
</property>

<property>
<name>hbase.regionserver.info.port</name>
<value>16301</value>
</property>

参考链接