快速搭建Hadoop及HBase分布式环境

摘要:
本文旨在快速构建Hadoop和HBase分布式环境。如果要构建集群,应该参考ambari。目前,我们正在探索该项目。准备三个虚拟机:一个作为NameNode,一个作为HMaster,两个作为DataNode和HRegionServer。同时,Zookeeper也安装在所有三个设备上。

本文旨在快速搭建一套Hadoop及HBase的分布式环境,自己测试玩玩的话ok,如果真的要搭一套集群建议还是参考下ambari吧,目前正在摸索该项目中。下面先来看看怎么快速搭建一套分布式环境。

准备
  1. 三台虚拟机:1台作为NameNode和HMaster 两台作为DataNode和HRegionServer。同时三台都安装zookeeper。
  2. Hadoop-2.7.3,HBase-1.2.4 ,Zookeeper-3.4.9 , JDK1.8.0_121 安装包
基础环境准备

对三台机器创建新用户hadoop,并将其加入sudoers,并更改hostname

useradd hadoop
passwd hadoop

vi /etc/sudoers

hadoop ALL=(ALL)    ALL

vi /etc/hostname
#配置为 namenode-1/datanode-1/datanode-2

配置免密登录,配置一台机器,生产ssh密钥并配置本机免密登录,然后将整个.ssh文件夹传到其他机器上,更改authorized_keys的权限即可

ssh-keygen #可一直回车
#配置本机免密
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
#上传到其他机器
scp -r .ssh hadoop@xxxx:~
#登录到其他机器,设置authorized_keys权限
chmod 644 .ssh/authorized_keys

关闭防火墙并禁止开机启动

service iptables status #查看防火墙状态`  
service iptables stop #关闭防火墙`  
chkconfig iptables --list #查看防火墙开机启动状态`  
chkconfig iptables off #关闭防火墙开机启动`  
reboot # 重启`
安装JDK
mkdir /usr/java
tar zxvf xxjdk.tar.gz
mv jdk1.8.0_121/ /usr/java # 安装JDK

vi /etc/profile # 添加JAVA_HOME

export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile
安装Zookeeper并配置集群

根据三台机器的ip配置hosts(配置一份然后scp到其他机器):

cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.3 namenode-1
192.168.8.4 datanode-1
192.168.8.5 datanode-2

解压缩zookeeper安装文件,修改配置项:

tar -zxvf zookeeper-3.4.9.tar.gz -C /home/hadoop

cd /home/hadoop/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

#修改dataDir的值
dataDir=/home/hadoop/zookeeper-3.4.9/tmp

#在文件后面添加(server后面的数字与myid保持一致)
server.1=namenode-1:2888:3888
server.2=datanode-1:2888:3888
server.3=datanode-2:2888:3888

创建tmp文件,并创建myid文件

mkdir /home/hadoop/zookeeper-3.4.9/tmp
echo 1 > /home/hadoop/zookeeper-3.4.9/tmp/myid

将配置好的zookeeper文件夹传到其他机器上

scp -r /home/hadoop/zookeeper-3.4.9 hadoop@xxxx:~

然后分别更改其他机器的myid文件,对应配置文件中server后面的数字。分别启动三台机器的zookeeper

cd /home/hadoop/apps/zookeeper-3.4.9/bin/
./zkServer.sh start

查看目前zookeeper状态,一个leader,两个follower,命令如下:

./zkServer.sh status
安装Hadoop

解压Hadoop安装包

tar zxvf hadoop-2.7.3.tar.gz

配置各项配置文件

hadoop-env.sh

在hadoop-env.sh中配置JAVA_HOME环境变量

export JAVA_HOME="/usr/java/jdk1.8.0_121"

core-site.xml

用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode-1:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

hdfs-site.xml

HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/hadoopdata/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/hadoopdata/data</value>
    </property>
    <property>
        <name>dfs.blocksize</name>
        <value>268435456</value>
    </property>
</configuration>

mapred-site.xml
HDFS的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等

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

yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>namenode-1:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>namenode-1:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>namenode-1:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>namenode-1:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>namenode-1:8088</value>
    </property>
</configuration>

slaves

Hadoop集群的slave主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和NodeManager

datanode-1
datanode-2

将上面配置好的hadoop文件夹scp拷贝到其他两台机器上。

格式化HDFS存储

进入hadoop目录

# bin/hdfs namenode -format

在格式化过程中注意输出结果,成功后会有类似下面的输出:

17/05/17 16:18:16 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = namenode-1/192.168.8.3
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.7.3
......
17/05/17 16:18:17 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/name has been successfully formatted.
17/05/17 16:18:18 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
17/05/17 16:18:18 INFO util.ExitUtil: Exiting with status 0
17/05/17 16:18:18 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at namenode-1/192.168.8.3
************************************************************/

启动Hadoop服务

启动和停止脚本位于${HADOOP_HOME}下sbin目录

启动HDFS

# sbin/start-dfs.sh

启动Yarn

# sbin/start-yarn.sh

启动MapReduce JobHistory Server

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

验证服务是否正常运行

查看Master节点上服务:

[hadoop@namenode-1 hadoop]$ jps
4283 NameNode
4643 ResourceManager
4466 SecondaryNameNode
5259 Jps
5173 JobHistoryServer

查看Master节点上服务:

[hadoop@datanode-1 ~]$ jps
3116 Jps
2844 DataNode
2976 NodeManager

各服务Web UI默认端口

NameNode    50070
ResourceManager 8088
MapReduce JobHistory Server 19888

登录各服务Web界面查看服务运行状况。

停止Hadoop服务

停止HDFS

# sbin/stop-dfs.sh

停止Yarn

sbin/stop-yarn.sh

停止MapReduce JobHistory Server

# sbin/mr-jobhistory-daemon.sh stop historyserver
安装HBase

解压HBase安装包

tar hbase-1.2.4.tar.gz

配置HBase

hbase-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_121

export HBASE_MANAGES_ZK=false

hbase-site.xml

<configuration>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://namenode-1:9000/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>namenode-1,datanode-1,datanode-2</value>
    </property>
</configuration>

regionservers

配置regionservers主机列表

datanode-1
datanode-2

将配置好的hbase目录scp到其他两天机器上。

启动停止HBase

HBase脚本位于${HBASE_HOME}/bin目录下。

# bin/start-hbase.sh

停止HBase

# bin/stop-hbase.sh

查看HBase状态

分别在Master节点和Slave节点上使用jps查看HBase相关进程是否正常运行

[hadoop@namenode-1 ~]$ jps
2302 ResourceManager
1942 NameNode
1730 QuorumPeerMain
3781 HMaster
4653 Jps
2127 SecondaryNameNode

[hadoop@datanode-1 ~]$ jps
2268 HRegionServer
1915 NodeManager
1804 DataNode
1662 QuorumPeerMain
2715 Jps

可进入HBase Web UI进行查看,默认端口为16010。

参考文章:
http://www.coolee.me/hadoop-hbase-installation.html

免责声明:文章转载自《快速搭建Hadoop及HBase分布式环境》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传linux日常整理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

macos下安装单机版hadoop

mac单机 brew install hadoop Configure 默认配置目录为/usr/local/cellar/hadoop/3.3.0/libexec/etc/hadoop/ hadoop-env.sh # 放开并设置 export JAVA_HOME="/Library/Java/JavaVirtualMachines/adoptopenj...

从零搭建企业大数据分析和机器学习平台-技术栈介绍(三)

数据传输和采集 Sqoop数据传输工具实际项目开发中,往往很多业务数据是存放在关系型数据库中,如 MySQL数据库。我们需要将这些数据集中到数据仓库中进行管理,便于使用计算模型进行统计、挖掘这类操作。 Sqoop是Apache软件基金会的⼀一款顶级开源数据传输工具,用于在 Hadoop与关系型数据库(如MySQL、Oracle、PostgreSQL等)之间...

Hive分析hadoop进程日志

想把hadoop的进程日志导入hive表进行分析,遂做了以下的尝试。 关于hadoop进程日志的解析 使用正则表达式获取四个字段,一个是日期时间,一个是日志级别,一个是类,最后一个是详细信息, 然后在hive中建一个表,可以用来方便查询。 2015-12-18 22:23:23,357 INFO org.apache.hadoop.yarn.server...

yum install hadoop related client

yum list avaliable hadoop* yum list installed yum repolist repo is in /etc/yum.repos.d yum install hadoop-client yum install hive-jdbc  #beeline yum install hive  # or hive.noarch...

sqoop笔记

sqoop 应该算是一个ETL工具,方便的数据导入导出功能。 # Sqoop 用来导出hive数据到mysql的工具 # 下载 sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz cd /usr/local/src # rz 上传到hadoop主机上 tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0...

Hadoop 部署之 Spark (六)

目录 一、Spark 是什么 二、Scala的安装(所有节点) 三、Spark 安装(所有节点) 1、下载安装 2、配置 Spark 环境变量 四、Spark 配置(namenode01) 1、配置 spark-env.sh 2、配置 slaves 3、配置文件同步到其他节点 4、启动 Spark 集群 五、检查 1、JPS 2、Spa...