centos7搭建完全分布式HDFS Hbase Flink

centos7搭建完全分布式HDFS Hbase Flink

一、安装环境

操作系统:
CentOS7.2.1511

hadoop版本:
2.8.5
节点信息:

Namenode	192.168.0.33
Datanode	192.138.0.185
Datanode	192.168.0.193

二、安装jdk

安装jdk8,注意:hadoop2.x,必须是jdk8
打开/etc/profile,在文件最后面添加如下内容

export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

最后,source /etc/profile

三、设置/etc/host

192.168.0.33 hadoop-namenode
192.168.0.185 hadoop-datanode-1
192.168.0.193 hadoop-datanode-2

四、配置密钥对,可以免密执行。

生成SSH KEY并将其拷贝到各个节点主机上
依次执行如下命令:

ssh-keygen 
ssh-copy-id localhost #免密钥登录本机 
ssh-copy-id hadoop-datanode-1
ssh-copy-id hadoop-datanode-2

五、安装hadoop(三个节点都配置)

#下载2.8.5版本hadoopcurl -O
#安装到/usr/hadoop目录
tar zxvf hadoop-2.8.5.tar.gz -C /usr/hadoop --strip-components 1

1、配置环境变量

export HADOOP_HOME=/usr/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
source ~/.bashrc

2、配置datenode文件目录(三个节点都配置)

cd /usr/hadoop/
mkdir datanode

3、配置hdfs(三个节点都配置)
打开~/etc/hadoop/hdfs-site.xml文件,在 - 之间添加如下内容:

<property>
    <name>dfs.replication</name>
    <value>2</value>
<description>副本个数,默认是3,应小于datanode机器数量</description>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///usr/hadoop/datanode</value>
<description>datanode上数据块的物理存储位置</description>
  </property>

4、主节点增加内容(只有namenode节点)
在namenode节点,打开~/etc/hadoop/hdfs-site.xml文件,新增如下内容:

 <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/hadoop/datanode/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
    </property>

5、配置hadoo core(三个节点都配置)
打开~/etc/hadoop/core-site.xml文件,在 - 之间添加如下内容:

 <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-namenode:9000/</value>
  </property>

6、在hadoop中设置JAVA_HOME环境变量(三个节点都配置)

首先通过如下命令在本机修改hadoop-env.sh文件中的环境变量:

sed -i -e 's/\${JAVA_HOME}/\/usr\/java\/default/' hadoop-env.sh

7、配置map-reduce(只在namenode节点配置)

打开~/etc/hadoop/mapred-site.xml文件,新增如下内容:

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
<description>指定mapreduce使用yarn框架</description>
  </property>
</configuration>

8、配置yarn(三个节点都配置)

首先打开~/etc/hadoop/yarn-site.xml文件,在 - 之间添加如下内容:

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop-namenode</value>
<description>指定resourcemanager所在的hostname</description>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
<description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序</description>
  </property>

9、配置slave

打开etc/hadoop/slaves文件,添加如下内容:

hadoop-namenode
hadoop-datanode-1
hadoop-datanode-2

10、在Namenode上运行如下命令,分别启动hdfs和yarn服务

初始化:hdfs namenode -format
start-dfs.sh
start-yarn.sh

11、验证
在Namenode上运行jps命令,应该会看到如下进程

NameNode
SecondaryNameNode
NodeManager
DataNode
ResourceManager
Jps

在Datanode上运行jps命令,应该会看到如下进程:

NodeManager
Jps
DataNode

12、web界面

192.168.1.182:50070

192.168.1.182:8088

总结:

安装步骤

1、配置jdk

2、配置ssh

3、安装hadoop

4、配置hfds-site.xml,注意,主节点比其他节点多内容。

5、配置core-site.xml,三个节点都配置

6、配置yarn-site.xml,三个节点都配置

7、配置mapred-site.xml,主节点配置

错误:

错误1:

多次format导致id识别失败

处理方法:删除datanode目录,或者重命名目录。

重命名了一下各个数据节点DataNode

启动命令:

(2) 格式化 HDFS

    Bin/hdfs namenode -format

   格式化是对 HDFS这个分布式文件系统中的 DataNode 进行分块,统计所有分块后的初始元数据的存储在namenode中。(如果服务器再次启动,也需要进行这步,否则启动可能会失败)

(3)启动 NameNode

    Sbin/hadoop-daemon.sh start namenode

(4) 启动 DataNode

    Sbin /hadoop-daemon.sh start datanode

(5) 启动 SecondaryNameNode

    Sbin/hadoop-daemon.sh start secondarynamenode

Hbase 安装 参考
https://blog.csdn.net/ily666666/article/details/83052299

版本:hbase-2.2.5-bin.tar.gz
几台都一样
解压hadoop并配置环境变量
切换到/usr/local/目录下,执行命令
tar -zxvf hbase-2.0.2.tar.gz
解压完成后,配置环境变量
vi    /etc/profile
在末尾加入以下内容
export HBASE_HOME=/usr/local/hbase-2.0.2 
export PATH=$PATH:$HBASE_HOME/bin:/$HBASE_HOME/sbin
4修改hadoop中的一系列配置文件
执行命令 cd /usr/local/hbase-2.0.2/conf/ 切换到配置文件目录
4.1配置hbase-env.sh文件
执行命令vi hbase-env.sh
修改以下内容,并取消原文注释(#)
export JAVA_HOME=/usr/local/jdk1.8.0_181/
export HBASE_CLASSPATH=/usr/local/hadoop-2.8.3/etc/hadoop
export HBASE_MANAGES_ZK=false
export TZ="Asia/Shanghai"
4.2配置hbase-site.xml文件
执行命令 vi hbase-site.xml
在<configuration></configuration>节点内加入配置:
注:文章中的mini1,mini2,mini3请修改为自己的主机名或者ip地址
<property>  <!--RegionServer 的共享目录,用来持久化 Hbase-->
   <name>hbase.rootdir</name>
   <!– 如果要指定HDFS上的目录,端口号要与hdfs-site.xml中设为一致-->
   <value>hdfs://mini1:9000/hbase</value>
</property>
<property>  <!--启用分布式集群-->
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>
<property>   <!--默认HMaster HTTP访问端口-->
    <name>hbase.master.info.port</name>
    <value>16010</value>
</property>
<property>   <!--默认HRegionServer HTTP访问端口-->
  <name>hbase.regionserver.info.port</name>
  <value>16030</value>
</property>
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>mini1:2181,mini2:2181,mini3:2181</value>
</property>
<property>
   <name>hbase.zookeeper.property.dataDir</name>
   <value>/usr/local/hbase-2.0.2/tmp/zk/data</value>
 </property>
<property>
  <name>hbase.coprocessor.abortonerror</name>
  <value>false</value>
</property>
 4.3配置regionservers文件
 执行命令 vi regionservers
添加以下内容(即hadoop中配置的两个datanode的主机名)
注:文章中的mini1,mini2,mini3请修改为自己的主机名或者ip地址
将hbase传输至其他虚拟机
注:文章中的mini1,mini2,mini3请修改为自己的主机名或者ip地址
scp -r /usr/local/hbase-2.0.2 root@mini2:/usr/local/
scp -r /usr/local/hbase-2.0.2 root@mini3:/usr/local/
6为另外两台虚拟机配置hbase的环境变量
参考3中的配置方法
记得执行 source /etc/profile 使环境变量生效
7启动hbase
注:在启动hbase前,先启动zookeeper和hadoop
在master机器上(mini1)执行命令
start-hbase.sh
如果要关闭hbase ,可以执行命令stop-hbase.sh
8测试hbase
打开浏览器(不要用IE或者Edge建议谷歌浏览器或火狐浏览器)
通过下面的链接来测试,如果不行可以关闭linux防火墙再试一次
注:文章中的mini1,mini2,mini3请修改为自己的主机名或者ip地址

http://mini1:16010/master-status
http://mini2:16030/rs-status
 

踩坑记录

1.如果hbase logs报 File /input/data.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication
    解决方案:
    看它的报错信息好像是节点没有启动,但是我的节点都启动起来了,使用jps也能查看到节点信息。
    使用hadoop dfsadmin -report命令查看磁盘使用情况,发现出现以下问题:
    Configured Capacity: 0 (0 B)Present Capacity: 0 (0 B)DFS Remaining: 0 (0 B)DFS Used: 0 (0 B)DFS Used%: NaN%Under replicated blocks: 0Blocks with corrupt replicas: 0Missing blocks: 0-------------------------------------------------Datanodes available: 0 (0 total, 0 dead)
    节点下存储空间都是空的,问题应该就是出现在这了。
        查阅资料发现造成这个问题的原因可能是使用hadoop namenode -format格式化时格式化了多次造成那么spaceID不一致,解决方案:
    1、停止集群(切换到/sbin目录下)
    stop-all.sh
    2、删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据;
    rm -rf /root/training/hadoop-2.7.3/tmp
    3、重新格式化namenode(切换到hadoop目录下的bin目录下)
    hdfs namenode -format
    4、重新启动hadoop集群(切换到hadoop目录下的sbin目录下)
    start-all.sh

2. 如果报SLF4J: Class path contains multiple SLF4J bindings. 错误:
    修改hbase项目下//conf/hbase-env.sh这个文件.添加下面这行
    看key名字就应该能明白:Hbase禁用查找Hadoop的Classs=True
    export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true

Flink配置
第一步下载 flink 最好带hadoop包的,注意对应的安装的hadoop版本
如果几台服务器都跑,只需要配置 flink下面的master 与slaves填写对应主机 几台服务器都scp一份
在 cat /etc/profile 文件加入:

export HADOOP_CONF_DIR=/home/hadoop/hadoop/etc/hadoop #hadoop的路径

启动方式有几种
见:https://blog.csdn.net/oqzuser12345678999q/article/details/107656051

如果运行报内容太小在 hadoop的yar-site.xml加入

<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

猜你喜欢

转载自blog.csdn.net/oqzuser12345678999q/article/details/107760662