Centos7 Hadoop 2.7.3 + Hive + HBase + Kerberos 集群环境搭建


Hadoop集群中不同主机扮演不同的角色,主要分下面几种:
Master
    NameNode
    NameNode用于管理文件系统HDFS ,维护文件系统树结构和文件元数据。当有新文件要写入系统时客户端会先向NameNode查询当前文件系统的状态,然后得知自己可以往哪里写入,最后实际写入文件系统,这中间NameNode就是管理主要信息的核心设备。

    ResourceManager
    ResourceManager用于管理和分配工作,它是所有工作的总调度程序。

Slave
    DataNode
    DataNode提供文件存储,它将自己的存储空间分块,然后向NameNode报告自己的存储状态并负责真正保存文件
    
    NodeManager
    NodeManager用于接受ResourceManager分配的工作并实际工作,是所有工作的实际执行者。

Hadoop有三种安装模式:单机模式,伪分布式,真正分布式。
三种模式的区别 & 单机模式的安装,可以参考:https://blog.csdn.net/sunny05296/article/details/54292593
本文主要介绍第三种完全分布式模式安装。

hdfs的进程节点
namenode:记录源数据的命名空间,数据分配到那些datanode存储,协调客户端对文件访问。
datanode:负责所在物理节点的储存管理,一次写入、多次读取(不能修改),文件由数据块组成,典型的块大小是64M。数据块尽量散步到各个节点。
secondarynamenode:当namenode重启的时候,会合并硬盘上的fsimage(老的)文件和edits(最新)文件,得到完整的Metadata信息。这个fsimage文件可以看做是一个过时的Metadata信息文件(最新的Metadata修改信息在edits文件中)。如果edits文件非常大,那么这个合并过程就非常慢,导致HDFS长时间无法启动,如果定时将edits文件合并到fsimage,那么重启namenode就比较快。secondarynamenode就是干这活的。

官网原始安装文档参考:
http://hadoop.apache.org/docs/r2.7.3/
http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/ClusterSetup.html


软件下载:
hadoop-2.7.3:http://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
hbase-1.1.2:https://archive.apache.org/dist/hbase/1.1.2/hbase-1.1.2-bin.tar.gz
hive-1.2.1:https://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz


> 节点规划 & hostname设置
设置hostname(3个节点上操作)
hostnamectl set-hostname hd106   #节点1(master)执行
hostnamectl set-hostname hd107   #节点2(slave1)执行
hostnamectl set-hostname hd108   #节点3(slave2)执行

3个节点上进行同样的设置,执行下面命令:
echo '
192.168.111.106 hd106
192.168.111.107 hd107
192.168.111.108 hd108
' >> /etc/hosts

测试互通性:
ping -c 1 hd106 && ping -c 1 hd107 && ping -c 1 hd108


> 防火墙配置(3个节点都配置)
systemctl  stop firewalld
systemctl  disable firewalld

> ntp时钟同步配置(3个节点都配置)
ntp配置详情可以参考:https://blog.csdn.net/sunny05296/article/details/65980897/

检查ntp包是否已经安装
rpm -q ntp

如果没有安装,则需要先安装并设置开机自动启动ntpd服务
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd

配置前先使用命令同步时间,本机与外部时间服务器时间差距太大,让ntpd不能正常同步
ntpdate -u cn.pool.ntp.org


修改配置文件、配置 ntpserver 同步源
vi /etc/ntp.conf

......
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
 
#配置上游时间服务器为本地的ntpd Server服务器
server 192.168.111.254
 
# 配置允许上游时间服务器主动修改本机的时间
restrict 192.168.111.254 nomodify notrap noquery
 
#下面这个配置,建议NTP Client关闭,建议NTP Server打开。因为Client如果打开,可能导致NTP自动选择合适的最近的NTP Server、也就有可能选择了LOCAL作为Server进行同步,而不与远程Server进行同步。
#server 127.127.1.0  # local clock
#fudge 127.127.1.0  stratum 10

重启ntpd服务
systemctl  restart ntpd

查看网络中的NTP服务器
ntpq  -p

查看同步状态
ntpstat 


> JDK

Hadoop对Java的版本的支持情况参考官方说明:
https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions

Supported Java Versions
Apache Hadoop 3.3 and upper supports Java 8 and Java 11 (runtime only)
Please compile Hadoop with Java 8. Compiling Hadoop with Java 11 is not supported:  HADOOP-16795 - Java 11 compile support OPEN
Apache Hadoop from 3.0.x to 3.2.x now supports only Java 8
Apache Hadoop from 2.7.x to 2.10.x support both Java 7 and 8

Java8有些bug在Java9上才得到修复,考虑到成熟和稳定性,我选择openjdk 1.7

3个节点上都执行同样的安装

查询系统是否已安装java
yum list installed | grep java
卸载openjdk
yum -y remove java-1.7.0-openjdk*
卸载tzdata-java
yum -y remove tzdata-java.noarch


查询yum源中的java-1.7版本
yum list |grep java-1.7 或  yum list java*
yum list java-1.7*

[root@hd106 ~]# yum list java-1.7*
......
Available Packages
java-1.7.0-openjdk.x86_64                                                                 1:1.7.0.261-2.6.22.2.el7_8                                                   base
java-1.7.0-openjdk-accessibility.x86_64                                                   1:1.7.0.261-2.6.22.2.el7_8                                                   base
java-1.7.0-openjdk-demo.x86_64                                                            1:1.7.0.261-2.6.22.2.el7_8                                                   base
java-1.7.0-openjdk-devel.x86_64                                                           1:1.7.0.261-2.6.22.2.el7_8                                                   base
java-1.7.0-openjdk-headless.x86_64                                                        1:1.7.0.261-2.6.22.2.el7_8                                                   base
java-1.7.0-openjdk-javadoc.noarch                                                         1:1.7.0.261-2.6.22.2.el7_8                                                   base
java-1.7.0-openjdk-src.x86_64                                                             1:1.7.0.261-2.6.22.2.el7_8                                                   base
[root@hd106 ~]#


安装指定版本的openjdk
yum -y install java-1.7.0-openjdk*

查看版本
java -version

java version "1.7.0_261"
OpenJDK Runtime Environment (rhel-2.6.22.2.el7_8-x86_64 u261-b02)
OpenJDK 64-Bit Server VM (build 24.261-b02, mixed mode)


配置Java环境变量:
echo '
# for java 
export JAVA_HOME=/lib/jvm/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
' >> /etc/profile

生效Java环境变量配置
source /etc/profile
echo $JAVA_HOME


> 添加 hadoop 用户(3个节点上添加)
当然也可以直接使用root用户,如果直接用root用户,这里就不需要添加用户了
useradd hadoop
passwd hadoop

> ssh免密匙登录秘钥生成(3个节点上操作)
切换到hadoop用户目录,配置ssh,生成秘钥(如果直使用root用户、不使用hadoop用户,则无需切换,直接切换到root根目录)
su - hadoop
cd ~
ssh-keygen -t rsa   #配置ssh,生成密匙,使到ssh可以免密码连接(RSA算法,基于因数不对称加密:公钥加密私钥才能解密,私钥加密公钥才能解密)。提示输入时,三次直接回车,不输入

> 设置节点间的互信关系(3个节点上操作)
hadoop用户操作
cd ~
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hd106     #将本机的公钥复制到远程机器的authorized_keys文件中(~/.ssh/authorized_key),会提示输入用户密码
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hd107     #将本机的公钥复制到远程机器的authorized_keys文件中(~/.ssh/authorized_key),会提示输入用户密码
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hd108     #将本机的公钥复制到远程机器的authorized_keys文件中(~/.ssh/authorized_key),会提示输入用户密码

3)测试节点互信(3个节点上进行测试)
首次可能会提示输入yes,直接输入yes即可完成登录,不需要密码,后续就不会提示了
exit
su - hadoop
ssh hd106 date && ssh hd107 date && ssh hd108 date

[hadoop@hd106 ~]$ ssh hd106 date && ssh hd107 date && ssh hd108 date
Sat Aug 28 17:29:15 CST 2021
Sat Aug 28 17:29:15 CST 2021
Sat Aug 28 17:29:16 CST 2021
测试免密登录,如果不提示输入密码,则配置成功

> hadoop安装
hd106(master)节点上操作

切换用户
su - hadoop

拷贝软件包
cd /home/hadoop
cp -r /tmp/soft-hadoop-2.7.3/  ./

创建文件目录
为了便于管理,给master的hdfs的NameNode、slaver的hdfs的DataNode及临时文件创建对应的独立目录(在用户目录下创建目录)
mkdir -p /home/hadoop/hdfs/name
mkdir -p /home/hadoop/hdfs/data
mkdir -p /home/hadoop/hdfs/tmp

把目录通过scp拷贝到远程两个slaver节点:hd107和hd108
scp -r /home/hadoop/hdfs hadoop@hd107:/home/hadoop/
scp -r /home/hadoop/hdfs hadoop@hd108:/home/hadoop/

检查拷贝是否成功
ssh hadoop@hd107 ls -l /home/hadoop/hdfs
ssh hadoop@hd108 ls -l /home/hadoop/hdfs

解压hadoop压缩包到指定目录下(解压后释放目录hadoop-2.7.3)
cd soft-hadoop-2.7.3
tar -zxvf hadoop-2.7.3.tar.gz -C /home/hadoop/
cd /home/hadoop/


配置用户的hadoop环境变量(修改用户的.bash_profile文件)

echo '
export HADOOP_DEV_HOME=/home/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export JAVA_LIBRARY_PATH='/home/hadoop/hadoop-2.7.3/lib/native'
export HBASE_HOME=/home/hadoop/hbase-1.1.2
export PATH=$PATH:$HBASE_HOME/bin
' >> ~/.bash_profile

HBASE_HOME可以等HBase安装后再根据实际再修改
立刻让hadoop环境变量生效,执行如下命令:
source .bash_profile

检查hadoop环境变量配置是否生效
echo $HADOOP_DEV_HOME

配置文件复制到远程其他节点:
scp ~/.bash_profile hadoop@hd107:/home/hadoop/
scp ~/.bash_profile hadoop@hd108:/home/hadoop/

其他节点上也执行环境变量立即生效:
cd ~
source .bash_profile
echo $HADOOP_DEV_HOME


Hadoop的配置
回到hd106(master)节点,继续配置
进入hadoop-2.7.3的配置目录
cd /home/hadoop/hadoop-2.7.3/etc/hadoop

依次修改 core-site.xml、hdfs-site.xml、mapred-site.xml 及 yarn-site.xml 文件

vi core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property> 
    <name>hadoop.tmp.dir</name> 
    <value>file:/home/hadoop/hdfs/tmp</value> 
    <description>A base for other temporary directories.</description> 
  </property> 

  <property> 
    <name>io.file.buffer.size</name> 
    <value>65536</value> 
  </property> 

  <property> 
    <name>fs.default.name</name> 
    <value>hdfs://hd106:9000</value> 
  </property> 

  <property> 
    <name>hadoop.proxyuser.root.hosts</name> 
    <value>*</value> 
  </property> 

  <property> 
    <name>hadoop.proxyuser.root.groups</name> 
    <value>*</value> 
  </property> 
</configuration>


vi hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

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

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

  <property> 
    <name>dfs.namenode.secondary.http-address</name> 
    <value>hd106:9001</value> 
  </property> 
  
  <property> 
    <name>dfs.webhdfs.enabled</name> 
    <value>true</value> 
  </property> 
  
  <property> 
    <name>dfs.permissions</name> 
    <value>false</value> 
  </property> 
</configuration>

vi mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value> 
  </property> 
</configuration>

vi yarn-site.xml

<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<configuration>
<!-- Site specific YARN configuration properties -->
  <property> 
    <name>yarn.resourcemanager.address</name> 
    <value>hd106:18040</value> 
  </property> 

  <property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>hd106:18030</value> 
  </property> 

  <property> 
    <name>yarn.resourcemanager.webapp.address</name> 
    <value>hd106:18088</value> 
  </property> 

  <property> 
    <name>yarn.resourcemanager.resource-tracker.address</name> 
    <value>hd106:18025</value> 
  </property> 
  
  <property> 
    <name>yarn.resourcemanager.admin.address</name> 
    <value>hd106:18141</value> 
  </property> 
  
  <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> 
</configuration>


修改 hadoop-env.sh 加入 JAVA_HOME 环境变量配置:

echo '
export JAVA_HOME=/lib/jvm/java
' >>  hadoop-env.sh


在hd106s master节点上创建masters文件、指定SNN
echo 'hd106' > /home/hadoop/hadoop-2.7.3/etc/hadoop/masters


在hd107、hd108 slave节点上创建slaves文件、指定DN
echo 'hd107
hd108 ' > /home/hadoop/hadoop-2.7.3/etc/hadoop/slaves


hadoop配置参数优化(如果要调整优化相关参数,则参考下面参数说明,不调整的话直接跳过)

1、hdfs-site.xml 参数
  dfs.name.dir:NameNode 元数据存放位置。默认值:使用core-site.xml中的hadoop.tmp.dir/dfs/name。
  dfs.block.size:对于新文件切分的大小,单位byte。默认是64M,建议是128M或更大。每一个节点都要指定,包括客户端。默认值:67108864。如果调整为128M,可以写成134217728,也可以写成128m。支持k,m,g,p,t。
  dfs.data.dir:DataNode在本地磁盘存放block的位置,可以是以逗号分隔的目录列表,DataNode循环向磁盘中写入数据,每个DataNode可单独指定与其它DataNode不一样。默认值:${hadoop.tmp.dir}/dfs/data。
  dfs.namenode.handler.count:NameNode用来处理来自DataNode的RPC请求的线程数量。建议设置为DataNode数量的10%,一般在10~200个之间。如设置太小,DataNode在传输数据的时候日志中会报告“connecton refused"信息。在NameNode上设定。默认值:10。
  dfs.datanode.handler.count:DataNode用来连接NameNode的RPC请求的线程数量。取决于系统的繁忙程度。设置太小会导致性能下降甚至报错。在DataNode上设定。默认值:3。
  dfs.datanode.max.xcievers:DataNode可以同时处理的数据传输连接数。默认值:256。建议值:4096。
  dfs.permissions:如果是true则检查权限,否则不检查(每一个人都可以存取文件) 。在NameNode上设定。默认值:true。
  dfs.datanode.du.reserved:在每个卷上面HDFS不能使用的空间大小。在每个DataNode上面设定。默认值:0。建议为10737418240,即10G。需要结合MapReduce场景设置。 
  dfs.datanode.failed.volumes.tolerated:DataNode可以容忍损块的磁盘数量,超过这个数量DataNode将会离线,所有在这个节点上面的block将会被重新复制。默认是0,但是在有多块磁盘的时候一般会增大这个值。
  dfs.replication:在文件被写入的时候,每一块将要被复制多少份。默认是3份。建议3。在客户端上设定。通常也需要在DataNode上设定。 

2、HDFS core-site.xml 参数
  fs.default.name:文件系统的名字。通常是NameNode的hostname与port。需要在每一个需要访问集群的机器上指定,包括集群中的节点。例如:hdfs://<your_namenode>:9000/。
  fs.checkpoint.dir:以逗号分隔的文件夹列表,SecondNameNode用来存储checkpoint image文件。如果多于一个文件夹,那么都会被写入数据。在SecondNameNode上设定。默认值:${hadoop.tmp.dir}/dfs/namesecondary。
  hadoop.tmp.dir:HDFS与本地磁盘的临时文件。默认是/tmp/hadoop-${user.name}。需要在所有的节点中设定。
  fs.trash.interval:当一个文件被删掉后,它会被放到用户目录的.Trash目录下,而不是立即删掉。经过此参数设置的分钟数之后,再删掉数据。默认是0,禁用此功能,建议1440(一天)。
  io.file.buffer.size:设定在读写数据时的缓存大小,应该为硬件分页大小的2倍。默认是4096,建议为65536(64K)。


3、yarn-site.xml 参数
  yarn.nodemanager.resource.memory-mb:该节点nodemanager资源池内存。NodeManager节点上可使用的物理内存总量,默认是8192(MB),根据节点所能分配的最大的内存进行分配即可,注意为操作系统与其他服务预留资源。
  yarn.nodemanager.resource.cpu-vcores:该节点有多少cpu加入资源池 , 默认值为8。表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。
  

4、设置log文件的大小和数量(修改core-site.xml配置参数)
  hadoop.logfile.size
  hadoop.logfile.count

5、设置组件的日志级别
查看不同组件的日志级别
  hadoop daemonlog -getlevel host:port packageName

设置组件的日志级别(4个级别:DEBUG, INFO, ERROR, FATAL)
  hadoop daemonlog –setlevle  host:port packageName level

port:为前台页面的端口,缺省为50070。
packageName:组件名称:
   org.apache.hadoop
   org.apache.hadoop.hdfs 
   org.apache.hadoop.hdfs.server.namenode.NameNode 
   org.apache.hadoop.hdfs.server.datanode.DataNode
   org.apache.hadoop.mapred.JobTracker
 

最后,将整个hadoop-2.7.3文件夹及其子文件夹使用scp复制到两台Slave的相同目录中:
cd ~
scp -r hadoop-2.7.3 hadoop@hd107:/home/hadoop/
scp -r hadoop-2.7.3 hadoop@hd108:/home/hadoop/ 


启动服务

先格式化NameNode(master节点执行)
hadoop namenode -format

启动所有服务(master节点执行)
start-all.sh

执行结果如下:
[hadoop@hd106 hadoop]$ start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [hd106]
hd106: starting namenode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-hd106.out
hd108: starting datanode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-hd108.out
hd107: starting datanode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-hd107.out
Starting secondary namenodes [hd106]
hd106: starting secondarynamenode, logging to /home/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-hd106.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-hd106.out
hd108: starting nodemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-hd108.out
hd107: starting nodemanager, logging to /home/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-hd107.out
[hadoop@hd106 hadoop]$ 

停止所有服务命令:
stop-all.sh


start-all.sh 会完成启动所有 master 节点的 NameNode(hadoop-daemon.sh start namenode)和 所有 slate节点的 DataNode(hadoop-daemons.sh start datanode)以及yarn等服务的启动

查看服务进程
ps -ef | grep hadoop
jsp

master节点执行结果:
[hadoop@hd106 hadoop]$ jps
29233 Jps
28614 NameNode
28963 ResourceManager
28806 SecondaryNameNode

slave节点执行结果:
[hadoop@hd107 hadoop]$ jps
28036 Jps
27924 NodeManager
27817 DataNode

[hadoop@hd108 ~]$ jps
27172 Jps
27062 NodeManager
26955 DataNode

如果要单独运行hdfs,yarn等,有单独的脚本可以管理,这里不再累赘,相关命令:
hadoop-daemon.sh start namenode
hadoop-daemons.sh start datanode
start-dfs.sh
yarn-daemon.sh start resourcemanager
yarn-daemons.sh start nodemanager 

测试HDFS
cd ~
hadoop fs -mkdir /hdfsdir/
hadoop fs -mkdir /hdfsdir/test01
hadoop fs -ls /hdfsdir
echo "1;jack;testaaaa" > file01.txt
hdfs dfs -put file01.txt /hdfsdir/test01/file01.txt
hdfs dfs -cat /hdfsdir/test01/file01.txt


hadoop进程管理页面,Web查看NameNode运行状况:http://192.168.108.106:18088/
hdfs管理页面,Web查看hdfs管理页面:http://192.168.108.106:50070/


测试YARN
可以访问YARN的Web管理界面

测试mapreduce
cd ~/hadoop-2.7.3/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.3.jar  pi 5 10

执行成功:
[hadoop@hd106 mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.7.3.jar  pi 5 10    
Number of Maps  = 5
Samples per Map = 10
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Starting Job
21/08/29 10:35:26 INFO client.RMProxy: Connecting to ResourceManager at hd106/192.168.111.106:18040
21/08/29 10:35:26 INFO input.FileInputFormat: Total input paths to process : 5
21/08/29 10:35:26 INFO mapreduce.JobSubmitter: number of splits:5
21/08/29 10:35:26 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1630203287822_0001
21/08/29 10:35:27 INFO impl.YarnClientImpl: Submitted application application_1630203287822_0001
21/08/29 10:35:27 INFO mapreduce.Job: The url to track the job: http://hd106:18088/proxy/application_1630203287822_0001/
21/08/29 10:35:27 INFO mapreduce.Job: Running job: job_1630203287822_0001
21/08/29 10:35:35 INFO mapreduce.Job: Job job_1630203287822_0001 running in uber mode : false
21/08/29 10:35:35 INFO mapreduce.Job:  map 0% reduce 0%
21/08/29 10:35:45 INFO mapreduce.Job:  map 100% reduce 0%
21/08/29 10:35:51 INFO mapreduce.Job:  map 100% reduce 100%
21/08/29 10:35:52 INFO mapreduce.Job: Job job_1630203287822_0001 completed successfully
21/08/29 10:35:52 INFO mapreduce.Job: Counters: 49
        File System Counters
                FILE: Number of bytes read=116
                FILE: Number of bytes written=715437
                FILE: Number of read operations=0
                FILE: Number of large read operations=0
                FILE: Number of write operations=0
                HDFS: Number of bytes read=1305
                HDFS: Number of bytes written=215
                HDFS: Number of read operations=23
                HDFS: Number of large read operations=0
                HDFS: Number of write operations=3
        Job Counters 
                Launched map tasks=5
                Launched reduce tasks=1
                Data-local map tasks=5
                Total time spent by all maps in occupied slots (ms)=38973
                Total time spent by all reduces in occupied slots (ms)=3320
                Total time spent by all map tasks (ms)=38973
                Total time spent by all reduce tasks (ms)=3320
                Total vcore-milliseconds taken by all map tasks=38973
                Total vcore-milliseconds taken by all reduce tasks=3320
                Total megabyte-milliseconds taken by all map tasks=39908352
                Total megabyte-milliseconds taken by all reduce tasks=3399680
        Map-Reduce Framework
                Map input records=5
                Map output records=10
                Map output bytes=90
                Map output materialized bytes=140
                Input split bytes=715
                Combine input records=0
                Combine output records=0
                Reduce input groups=2
                Reduce shuffle bytes=140
                Reduce input records=10
                Reduce output records=0
                Spilled Records=20
                Shuffled Maps =5
                Failed Shuffles=0
                Merged Map outputs=5
                GC time elapsed (ms)=570
                CPU time spent (ms)=3350
                Physical memory (bytes) snapshot=1575452672
                Virtual memory (bytes) snapshot=6413795328
                Total committed heap usage (bytes)=1130889216
        Shuffle Errors
                BAD_ID=0
                CONNECTION=0
                IO_ERROR=0
                WRONG_LENGTH=0
                WRONG_MAP=0
                WRONG_REDUCE=0
        File Input Format Counters 
                Bytes Read=590
        File Output Format Counters 
                Bytes Written=97
Job Finished in 26.374 seconds
Estimated value of Pi is 3.28000000000000000000
[hadoop@hd106 mapreduce]$ 


> hbase安装

待补充

> hive安装

待补充

> Kerberos安装

待补充
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是 CentOS7+DRBD+NFS+Keepalived 搭建的详细文档: 注意事项: - 本文档基于 CentOS 7 操作系统。 - 本文档假设您已经熟悉 Linux 基础知识。 - 本文档中的 IP 地址、网段等均为示例,请根据实际情况修改。 一、安装 DRBD 1. 安装 epel 源 ```bash yum install epel-release -y ``` 2. 安装 DRBD ```bash yum install drbd84-utils kmod-drbd84 -y ``` 3. 修改 DRBD 配置文件 `/etc/drbd.d/global_common.conf`,添加以下配置: ```conf global { usage-count no; } common { protocol C; } ``` 4. 配置 DRBD,修改 `/etc/drbd.d/drbd0.res` 文件,添加以下配置: ```conf resource drbd0 { device /dev/drbd0; meta-disk internal; syncer { rate 100M; } on node1 { address 192.168.1.101:7788; disk /dev/sdb1; } on node2 { address 192.168.1.102:7788; disk /dev/sdb1; } } ``` 说明: - `device`:DRBD 同步的设备名。 - `meta-disk`:DRBD 元数据存储位置。 - `syncer`:同步速率。 - `on`:节点配置,`address` 为节点 IP 和端口,`disk` 为 DRBD 同步的磁盘设备。 5. 初始化 DRBD 在节点1上执行: ```bash drbdadm create-md drbd0 ``` 在节点2上执行: ```bash drbdadm create-md drbd0 ``` 6. 启动 DRBD 在节点1上执行: ```bash drbdadm up drbd0 ``` 在节点2上执行: ```bash drbdadm up drbd0 ``` 7. 初始化数据 在节点1上执行: ```bash drbdadm primary drbd0 --force mkfs.xfs /dev/drbd0 ``` 在节点2上执行: ```bash drbdadm primary drbd0 --force mkfs.xfs /dev/drbd0 ``` 8. 启用 DRBD 自动同步 在节点1上执行: ```bash drbdadm -- --overwrite-data-of-peer primary drbd0 ``` 在节点2上执行: ```bash drbdadm connect drbd0 ``` 二、安装 NFS 1. 安装 NFS ```bash yum install nfs-utils -y ``` 2. 配置 NFS,修改 `/etc/exports` 文件,添加以下配置: ```conf /drbd_mount_point 192.168.1.0/24(rw,sync,no_root_squash) ``` 说明: - `/drbd_mount_point`:DRBD 挂载的目录。 - `192.168.1.0/24`:允许访问的 IP 段。 - `rw`:允许读写。 - `sync`:同步写入。 - `no_root_squash`:允许 root 用户访问。 3. 启动 NFS ```bash systemctl start nfs ``` 三、安装 Keepalived 1. 安装 Keepalived ```bash yum install keepalived -y ``` 2. 配置 Keepalived,修改 `/etc/keepalived/keepalived.conf` 文件,添加以下配置: ```conf ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script chk_nfs { script "/usr/local/bin/chk_nfs.sh" interval 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 virtual_ipaddress { 192.168.1.100/24 dev eth0 } track_script { chk_nfs } } ``` 说明: - `router_id`:路由 ID,可以随意设置。 - `vrrp_script`:自定义脚本,用于检测 NFS 服务是否正常。 - `vrrp_instance`:VRRP 实例配置,`state` 为当前节点状态(MASTER 或 BACKUP),`interface` 为节点网卡名称,`virtual_router_id` 为虚拟路由 ID,`priority` 为节点优先级,`virtual_ipaddress` 为虚拟 IP 地址。 3. 创建 NFS 检测脚本 `/usr/local/bin/chk_nfs.sh`,添加以下内容: ```bash #!/bin/bash nfs_status=$(systemctl status nfs | grep "Active:" | awk '{print $2}') if [ "$nfs_status" != "active" ] then exit 1 fi exit 0 ``` 说明:该脚本用于检测 NFS 服务是否正常,如果服务异常则返回 1。 4. 启动 Keepalived ```bash systemctl start keepalived ``` 至此,CentOS7+DRBD+NFS+Keepalived 的搭建已经完成了。您可以通过访问虚拟 IP 地址来访问 NFS 服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值