环境准备
zookeeper:zookeeper-3.4.14
hadoop:hadoop-2.8.5
hbase:hbase-1.4.13
master:namenode、resourcemanager,
slave1:secondarynamenode、datanode,
slave2:datanode
一、Hadoop集群搭建
1、hadoop安装包解压
tar zxvf hadoop-2.8.5.tar.gz
2、hadoop-env.sh、mapred-env.sh、yarn-env.sh三个配置文件添加JAVA_HOME
cd hadoop-2.8.5/etc/hadoop/
export JAVA_HOME=/usr/local/jdk1.8.0_191
3、修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!--
这两个配置用于指定namenode和datanode存放数据的位置
如果不指定,数据会存放到core-site.xml中配hadoop.tmp.dir目录下
-->
<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>
<!--配置数据副本数,不要超过datanode节点数-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--指定secondarynamenode所在节点-->
<property>
<name>dfs.secondary.http.address</name>
<value>slave1:50090</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4、修改slaves,添加数据节点
slave1
slave2
5、配置集群间免密登陆(一定要配置,否则后期启动阻塞)
ssh-keygen 四下回车
ssh-copy-id [email protected]
ssh-copy-id [email protected]
每个集群重复一遍,把本地的ssh复制到其他机器
6、将hadoop安装包分发给其他节点
scp -r hadoop-2.8.5 slave1:/usr/local/
scp -r hadoop-2.8.5 slave2:/usr/local/
7、全部节点hosts添加以下ip和名称
192.168.214.129 master
192.168.214.130 slave1
192.168.214.131 slave2
8、全部节点添加Hadoop环境变量
vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
9、在namenode主节点格式化文件系统
cd bin/
hdfs namenode -format
出现上图内容说明格式化成功。
10、主节点启动hdfs系统,resourcemanager节点启动yarn
start-dfs.sh
start-yarn.sh
关闭
cd sbin
stop-yarn.sh
stop-dfs.sh
11、Hadoop需要重装时:
1)删除每个机器中的hadoop日志
日志默认在HADOOP_HOME/logs下,如果不删除,日志文件会越积累越多,占用磁盘
2)删除原来的namenode和datanode产生的数据和文件。
删除配置的hadoop.tmp.dir
这个目录,如果配置了dfs.datanode.data.dir
和dfs.datanode.name.dir
也删除。
12、启动Hadoop当出现有datanode启动失败
查看core-site.xml文件中hadoop.tmp.dir的参数,在该目录下找到current目录下VERSION文件文件,修改其中的clusterID与namenode节点相同
/home/hadoop/hadoopdata/name/current
/home/hadoop/hadoopdata/data/current
二、Zookeeper集群搭建
1、zookeeper安装包解压
tar -zxvf zookeeper-3.4.14.tar.gz
2、复制conf/zoo_sample.cfg为zoo.cfg,修改zoo.cfg。新建目录data/,log/
dataDir=/usr/local/zookeeper-3.4.14/data
dataLogDir=/usr/local/zookeeper-3.4.14/log
server.0=192.168.214.129:2888:3888
server.1=192.168.214.130:2888:3888
server.2=192.168.214.131:2888:3888
3、将zookeeper安装包分发给其他节点
scp -r zookeeper-3.4.14 slave1:/usr/local/
scp -r zookeeper-3.4.14 slave2:/usr/local/
4、在所有机器上/zookeeper-3.4.14/data/下新建myid文件,根据上述步骤2中的名称(0、1、2)修改文件
vi /zookeeper-3.4.14/data/myid
0(master上)
1(slave1)
2(slave2)
5、启动、停止
bin/zkServer.sh start
bin/zkServer.sh stop
三、HBase集群搭建
1、hbase安装包解压
tar -zxvf hbase-1.4.13-bin.tar.gz
2、修改hbase-env.sh、hbase-site.xml、backup-masters、regionservers
cd hbase-1.4.13/conf
hbase-env.sh
# 加入JAVA_HOME
export JAVA_HOME=/usr/local/java/jdk1.8.0_73
# 指定不使用自带的zookeeper,如果搭建了zookeeper集群,改为false
export HBASE_MANAGES_ZK=true
hbase-site.xml
先创建hdfs://master:9000/user/hbase文件
hadoop fs -mkdir /user/hbase
configuration>
<!--
可以不配置,如果要配置,需要和zookeeper配置文件zoo.cfg中的dataDir指定的路径相同
zoo.cfg中dataDir=/var/zookeeper
那么:
<property>
<name>hbase.master</name>
<value>master</value>
</property>
<property>
<name>hbase.master.port</name>
<value>15999</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/var/zookeeper</value>
</property>
-->
<!--指定hbase的数据在hdfs上存放的位置-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/user/hbase</value>
</property>
<!--指定hbase集群为分布式集群-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--指定zookeeper集群-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave1:2181,slave2:2181</value>
</property>
<!--用于hbase数据读取时的编码格式-->
<property>
<name>hbase.regionserver.thrift.framed</name>
<value>true</value>
</property>
<property>
<name>hbase.regionserver.thrift.compact</name>
<value>true</value>
</property>
</configuration>
backup-masters:添加备用hbase-master
vi backup-masters
slave1
regionservers:加入RegionServer节点列表
vi regionservers
# 删除localhost
master
slave1
slave2
3、复制hadoop文件core-site.xml和hdfs-site.xml复制到hbase
cp /usr/local/hadoop-2.8.5/etc/hadoop/core-site.xml ./
cp /usr/local/hadoop-2.8.5/etc/hadoop/hdfs-site.xml ./
4、将hbase安装包分发给其他节点
scp -r hbase-1.4.13 slave1:/usr/local/
scp -r hbase-1.4.13 slave2:/usr/local/
5、添加环境变量
vi /etc/profile
export HBASE_HOME=/usr/local/hbase-1.4.13
export PATH=$PATH:$HBASE_HOME/bin:$HBASE_HOME/sbin
source /etc/profile
6、启动hbase集群
start-hbase.sh
另起一个连接,使用hbase shell能够进入hbase控制台,表示安装成功。
7、启动HBase时出错
Caused by: java.io.IOException: Problem binding to /10.12.4.75:60000 : Cannot assign requested address. To switch ports use the 'hbase.master.port' configuration property.
解决方法:修改/etc/hosts文件,在本地ip后面加上通过 hostname -f 查询到的名字。