CentOS环境下HBase与Hadoop集成实践指南
在开始集成前,需完成以下基础准备工作:
wget、tar、vim等常用工具;关闭防火墙(systemctl stop firewalld)或开放必要端口(如Hadoop的9000、50070,HBase的16010);配置/etc/hosts文件,将主机名与IP地址映射(如192.168.1.100 hadoop-master)。yum install java-11-openjdk-devel),并通过java -version验证安装;设置JAVA_HOME环境变量(在~/.bashrc中添加export JAVA_HOME=/usr/lib/jvm/java-11-openjdk,执行source ~/.bashrc生效)。Hadoop是HBase的数据存储底座,需先完成Hadoop的部署:
/usr/local/目录:wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
ln -s /usr/local/hadoop-3.3.4 hadoop # 创建软链接便于管理
/usr/local/hadoop/etc/hadoop),修改以下文件:
namenode为主机名):<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml.template复制):设置MapReduce运行框架为YARN:<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
~/.bashrc中添加Hadoop环境变量:export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source ~/.bashrc使变量生效。hdfs namenode -format
启动HDFS(start-dfs.sh)和YARN(start-yarn.sh),通过jps命令验证进程(应看到NameNode、DataNode、ResourceManager、NodeManager)。HBase依赖Hadoop存储数据,需正确关联Hadoop集群:
/usr/local/目录:wget https://archive.apache.org/dist/hbase/2.4.13/hbase-2.4.13-bin.tar.gz
tar -xzvf hbase-2.4.13-bin.tar.gz -C /usr/local/
ln -s /usr/local/hbase-2.4.13 hbase # 创建软链接
/usr/local/hbase/conf),修改以下文件:
JAVA_HOME注释,指定JDK路径(与Hadoop一致):export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
namenode为Hadoop NameNode主机名):<configuration>
<!-- 指向HDFS的HBase根目录 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode:9000/hbase</value>
</property>
<!-- 启用分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定ZooKeeper集群地址(单机部署用localhost) -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>namenode</value>
</property>
<!-- ZooKeeper数据存储目录 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hbase/zookeeper</value>
</property>
</configuration>
localhost,集群添加所有RegionServer主机名)。~/.bashrc中添加HBase环境变量:export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
执行source ~/.bashrc使变量生效。HBase与Hadoop的集成需通过以下配置实现无缝通信:
hbase.rootdir必须设置为HDFS的URI(如hdfs://namenode:9000/hbase),确保HBase数据存储在HDFS中。hbase.cluster.distributed设为true,启用HBase分布式模式(若为单机测试,可设为false,但生产环境必须为true)。hbase.zookeeper.quorum需指向ZooKeeper集群地址(单机用localhost),且hbase.zookeeper.property.dataDir指定的目录需存在(用于存储ZooKeeper数据)。start-dfs.sh && start-yarn.sh
start-hbase.sh
jps命令检查进程(Hadoop主节点应有NameNode、ResourceManager;HBase主节点应有HMaster;RegionServer节点应有HRegionServer)。http://namenode:9870(查看HDFS状态);http://namenode:16010(查看HBase集群状态)。hbase shell
create 'test_table', 'cf' # 创建表
put 'test_table', 'row1', 'cf:name', 'John' # 插入数据
scan 'test_table' # 查询数据
exit # 退出
hbase.rootdir中的HDFS主机名是否正确,/etc/hosts文件是否包含主机名映射,防火墙是否阻止端口(如9000、16010)。/hbase)存在且有写入权限(hdfs dfs -mkdir -p /hbase,hdfs dfs -chmod -R 777 /hbase)。