Hadoop环境搭建

本文详细介绍了如何在CentOS 6.4系统上搭建Hadoop环境,包括hadoop、zookeeper、storm、spark、Kafka、hive、hbase、flume和sqoop的安装配置过程,以及hbase与hive的集成。从环境配置到各组件的启动和状态检查,提供了全面的步骤指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包含hadoop、hive、hbase、zookeeper、storm、spark、Kafka、flume、sqoop

一、服务器基本配置

服务器系统版本:CentOS release 6.4 (Final)
JDK版本:java version “1.7.0_60*

二、 集群信息

这里写图片描述

三、 各组件版本信息

这里写图片描述

四、安装步骤

4.1 环境基本配置

addusr hadusr       #创建用户
passwd hadusr       #修改密码
mkdir hdfs hdfs_tmp #创建文件夹
chown -R hadusr:hadusr hdfs hdfs_tmp #设置文件夹宿主
vi  /etc/sysconfig/network           #修改主机名  重启后生效
vi /etc/hosts                        #配置IP  主机名映射

4.2 配置集群无密登陆

#生成秘钥
A、ssh-keygen -t rsa

 #收集所有机器上.ssh下生成的id_rsa.pub(公钥文件),
 #并将所有的公钥文追加至authorized_keys文件
B、cat id_rsa.pub >> authorized_keys

#将公钥分发至所有机器(以hdp04为例) 
C、scp -r ~/.ssh/authorized_keys hdp04:/home/hadusr/.ssh/

D、然后赋权:chmod 600 authorized_keys #给公钥文件赋权

4.3 hadoop安装配置

a、配置core-site.xml文件

<property>
     <name>hadoop.tmp.dir</name>
     <value>/hdfs/hadoop_tmp</value>
     <description>
     Abase for other temporary directories.
     </description>
</property>

<property>                      
     <name>fs.defaultFS</name>
     <value>hdfs://hdp01:9000</value>
 </property>
 <property>
      <name>io.file.buffer.size</name>
      <value>4096</value>
 </property>

配置b、java环境变量

vi  hadoop-env.sh  和 yarn-env.sh
#在开头添加如下JAVA环境变量(一定要添加切勿少了)
export JAVA_HOME=/soft/jdk1.7.0_79

c、配置hdfs-site.xml文件

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///hdfs_tmp/hadoop_name</value>
</property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///hdfs_tmp/hadoop_data</value>

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<property>
    <name>dfs.nameservices</name>
    <value>hadoop-cluster1</value>
</property>

<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hdp01:50090</value>
</property>

<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property>

d、配置mapred-site.xml文件

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    <final>true</final>
</property>

<property>
    <name>mapreduce.jobtracker.http.address</name>
    <value>hdp01:50030</value>
</property>

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hdp01:10020</value>
</property>

<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hdp01:19888</value>
</property>

<property>
    <name>mapred.job.tracker</name>
    <value>http://hdp01:9001</value>
</property>

e、配置yarn-site.xml文件

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hdp01</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<property>
    <name>yarn.resourcemanager.address</name>
    <value>hdp01:8032</value>
</property>

<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>hdp01:8030</value>
</property>

<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>hdp01:8031</value>
</property>

<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>hdp01:8033</value>
</property>

<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>hdp01:8088</value>
</property>

f、配置slaves

vi slaves 将slaves节点的机器配置在该文件

g、格式化集群

将以上配置好的hadoop分发至集群其它机器上

h、格式化集群

hadoop namenode -format

i、配置环境变量后启动

start-all.sh

j、查看集群状态

hdfs dfsadmin –report

4.4 zookeeper安装

a、下载zookeeper-3.3.6.tar.gz压缩包,并解压

b、2、 Zookeeper配置

进入zookeeper安装目录conf文件夹,复制zoo_sample.cfg并命名为zoo.cfg,配置好该文件即可,具体内容如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/hadoop_install/zookeeper-3.3.6/data
# the port at which the clients will connect
clientPort=2222
server.1=Hadoop-Main-Server:2888:3888
server.2=Hadoop-DataNode-01:2888:3888
server.3=Hadoop-DataNode-02:2888:3888
server.4=Hadoop-DataNode-03:2888:3888

c、参数说明

initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒 

syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒 

server.A=B:CD:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。 

注意:除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。

d、将配置好的zookeeper拷贝至所有节点

e、启动停止命令

通过zkServer.sh [start][stop][status]可启动、停止、查看zookeeper状态

4.5 storm安装

4.5.1 ZMQ(消息队列)安装

下载zeromq-2.2.0.tar.gz
解压:tar -zxvf zeromq-2.2.0.tar.gz -C /soft/
安装:./configure
安装遇到以下问题以及解决方法,不同环境可能遇到不同问题,针对性解决即可
执行 ./configure遇到如下错误

这里写图片描述

解决办法如下

这里写图片描述

如上图,依然报错,继续解决
安装:util-linux-2.21.1.tar.gz
解压后 ./configure
依然报错,使用 ./configure --without-ncurses && make即可
最后:make install解决
继续安装zeromq-2.2.0.tar.gz
./configure
make
make install

安装成功,结束。

4.5.2 编译安装JZMQ(是java调用c++的一个桥梁)

下载jzmq-master.zip(master)
#安装解压工具
yum install unzip
#解压
unzip master

安装:
cd jzmq-master
./autogen.sh
出现以下错误:

这里写图片描述

安装 pkg-config

这里写图片描述

依然报错:
下载 
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz

解压安装
./configure

依然出现如下错误
这里写图片描述

使用如下方式安装:
./configure --with-internal-glib
make
make install
安装成功
继续安装jmzq
./ autogen.sh  (发现缺少libtool  yum install libtool

OK,搞定

4.5.3 下载安装storm

storm相关配置   /conf/storm.yaml

a、
storm.zookeeper.servers:
storm集群使用的Zookeeper集群地址,其格式如下:

这里写图片描述

b、
storm.local.dir: 
Nimbus和Supervisor进程用于存储少量状态,
如jars、confs等的本地磁盘目录,
需要提前创建该目录并给以足够的访问权限。然后在storm.yaml中配置该目录,如上图:

c、
java.library.path:
Storm使用的本地库(ZMQ和JZMQ)加载路径,
默认为"/usr/local/lib:/opt/local/lib:/usr/lib",
一般来说ZMQ和JZMQ默认安装在/usr/local/lib 下,因此不需要配置即可。

d、 
nimbus.host: 
Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件

e、
supervisor.slots.ports: 
对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如上图配置:

f、 
zookeeper默认端口是2181   若为默认端口,该文件不需重配置端口

g、
drpc.servers  内存分配配置

这里写图片描述

h、主节点配置
nimbus.host: "hdp02"

以上所有步骤均在集群的每台机器上进行安装配置

4.5.3 storm集群启动

#客户端关闭  可正常运行
#主节点
nohup storm nimbus &
#界面
nohup storm ui &
#子节点
nohup storm supervisor &

#结束storm进程
storm kill SocketProcess

4.5.4 storm程序包提交

开发完成打jar包后:
#配置为可执行shell
Storm_syslog_warn.sh

#shell具体内容
storm jar /hdfs/test/xf9-log-handle-0.0.1-SNAPSHOT.jar com.xf9.log.topo.LogTopo xf9-syslog_warning

http://hdp02:8080/index.html即可查看集群状态
这里写图片描述

以上,说明storm安装完成并正常启动

4.6 spark安装

安装spark-2.1.0-bin-hadoop2.6版本
spark安装比较简单,进行相关配置即可

a、conf/spark-env.sh
export SPARK_MASTER_IP=hdp01
export SPARK_MASTER_PORT=7077
export JAVA_HOME=/usr/java/jdk1.7.0_60
export SCALA_HOME=/hdfs/scala-2.11.8
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=/hdfs/hadoop-2.6.0/etc/hadoop

b、vi slaves配置子节点
    hdp02
    hdp03
    hdp04

c、将配置好的软件包分发至其它机器即可
d、为了便于使用,配置好用户环境变量即可
e、集群启动
  /sbin/start-all.sh即可启动集群
f、在bin目录下可启动spark-shell  pyspark spark-sql等组件

后续继续分享spark的简单开发使用案例。

4.7 kafka安装

kafka下载解压后,分布在集群对应机器上即可,下面简单列下基本使用方法:

*服务启动(需要在集群机器上均启动)
#按此方法启动可保证服务在后台正常运行
kafka-server-start.sh -daemon /soft/kafka_2.10-0.8.2.1/config/server.properties >/dev/null 2>&1 &

*创建一个topic
##创建一个名称为my-topic的Topic,5个分区,并且复制因子为3
kafka-topics.sh --create --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --replication-factor 3 --partitions 5 --topic my-test

*查看topic

#查看名为my-test的topic
kafka-topics.sh --describe --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --topic my-test

#查看所有topic
kafka-topics.sh --describe --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --list

#具体参数说明
Partition: 分区
Leader   : 负责读写指定分区的节点
Replicas : 复制该分区log的节点列表
Isr      : "in-sync" replicas,当前活跃的副本列表(是一个子集), 
            并且可能成为Leader   
模拟生产-消费过程
模拟生产-消费过程

在一个终端启动生产程序:
kafka-console-producer.sh --broker-list hdp02:9092,hdp03:9092,hdp04:9092 --topic my-test

在另一个终端自动消费程序:
kafka-console-consumer.sh --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --from-beginning --topic my-test

此时可以在Producer终端上输入字符串消息行,然后回车,就可以在Consumer终端上看到消费者消费的消息内容。

4.8 hive安装

下载解压后配置hive环境变量

vi /conf/hive-env.sh

#添加如下内容
export HADOOP_HOME=/hdfs/hadoop-2.6.0
export HIVE_CONF_DIR=/hdfs/apache-hive-1.2.0-bin/conf

#配置hive元数据存储信息,默认的存储为自带的derby数据库,只允许单用户访问

#配置数据库连接信息
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.168.1:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
#驱动配置
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
#配置连接mysql数据库的用户名和密码
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
  </property>

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
以上配置完后,执行bin/hive命令即可启动

show databases; #查看数据库
use db;         #指定使用的数据库
show tables;    #查看数据库里面的表


#将hive配置成服务端,客户端单独启动模式

vi hive-site.xml

 <property>
    <name>hive.metastore.uris</name>
    <value>thrift://192.168.168.1:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>

在后台启动服务端
nohup hive --service metastore 2>&1 &

再启动 /bin/hive  即可使用

4.9 hbase安装

1、下载hbase-0.94.8.tar.gz
2、tar –zxvf hbase-0.94.8.tar.gz解压该文件
3、相关配置

a、/conf下hbase-env.sh文件配置
在文件结尾增加以下环境变量
export HBASE_MANAGES_ZK=false 
#true标识用自带的zookeeper,false标识使用单独安装的
export JAVA_HOME=/usr/java/jdk1.7.0_21
export HADOOP_HOME=/hadoop_install/hadoop-1.0.4
export HBASE_HOME=/hadoop_install/hbase-0.94.8
export HBASE_MANAGES_ZK=true
export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"

b、/conf下 hbase-site.xml文件配置
</configuration>
<property>  
    <name>hbase.rootdir</name> 
    <value>hdfs://hdp01:9000/hbase</value> 
</property> 

<property>  
    <name>hbase.cluster.distributed</name> 
    <value>true</value> 
</property> 

<property>  
    <name>hbase.master</name> 
    <value>hdfs://hdp01:60000</value> 
</property>

<property>  
    <name>hbase.zookeeper.quorum</name>  
    <value>hdp02,hdp03,hdp04</value> 
</property>

<property>  
    <name>zookeeper.session.timeout</name> 
    <value>60000</value> 
</property>

<property>  
    <name>hbase.zookeeper.property.clientPort</name> 
    <value>2181</value> 
</property> 

</configuration>

参数说明:
1、hbase.rootdir中需指明Hbase的数据存储位置,该主机名及端口必须
  与namenode相同
2、hbase.cluster.distributed true说明为完全分布式
3、hbase.master 指明Hbase的主机
4、hbase.zookeeper.quorum配置参与zookeeper选举的机器,最好配置奇数个
5、hbase.zookeeper.property.clientPort配置zookeeper的通信
   端口,需与zookeeper中的clientport一致。

c、/conf下 regionservers配置
   在该文件填写所有datanode
d、配置完成后,将hbase-0.94.8文件拷贝至集群所有节点

4.10 flume安装

下载解压后即可,如果与mysql配合需下载mysql对应驱动包
简单配置:

配置java环境变量
vi /conf/flume-env.sh
JAVA_HOME=/usr/java/jdk1.7.0_60

4.11 sqoop安装

下载sqoop-1.4.6后解压
基本配置:
vi /conf/sqoop-env.sh

export HADOOP_COMMON_HOME=/hdfs/hadoop-2.6.0
export HADOOP_HOME=/hdfs/hadoop-2.6.0
export HIVE_HOME=/hdfs/apache-hive-1.2.0-bin
export HADOOP_MAPRED_HOME=/hdfs/hadoop-2.6.0
export HIVE_HOME=/hdfs/apache-hive-1.2.0-bin
export ZOOCFGDIR=/hdfs/zookeeper-3.4.6

4.12 hbase与hive集成

通过hbase与hive集成后,在hive创建的表以及相关数据可通过hbase进行相关操作,具体整合方法如下:
(里面有可能涉及到jar包拷贝,由于之前集成时没有记录,现在记不清楚了,以下列出一些关键点)

主要进行一些jar配置,hive-hbase-handler-1.2.0.jar版本不兼容会影响hive与hbase通信,可下载源码后将habse自带jar包考入后,从新打包然后考入hive里面即可。

<property>
    <name>hive.aux.jars.path</name>
    <value>file:///hdfs/apache-hive-1.2.0-bin/lib/hive-hbase-handler-1.2.0.jar,file:///hdfs/hbase-1.2.4/lib/hbase-server-1.2.4.jar,file:///hdfs/zookeeper-3.4.6/zookeeper-3.4.6.jar,file:///hdfs/hbase-1.2.4/lib/protobuf-java-2.5.0.jar,file:///hdfs/apache-hive-1.2.0-bin/lib/hbase-client-1.2.4.jar</value>
</property>


在hive中创建一个hbase可识别的表:
CREATE TABLE hbase_table_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值