Hadoop环境搭建

来源:互联网 发布:石油大亨mac版 编辑:程序博客网 时间:2024/06/11 02:11

包含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 ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.dataDir=/hadoop_install/zookeeper-3.3.6/data# the port at which the clients will connectclientPort=2222server.1=Hadoop-Main-Server:2888:3888server.2=Hadoop-DataNode-01:2888:3888server.3=Hadoop-DataNode-02:2888:3888server.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./configuremakemake 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-glibmakemake install安装成功
继续安装jmzq./ autogen.sh  (发现缺少libtool  yum install libtoolOK,搞定

4.5.3 下载安装storm

storm相关配置   /conf/storm.yamla、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包后:#配置为可执行shellStorm_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.shexport SPARK_MASTER_IP=hdp01export SPARK_MASTER_PORT=7077export JAVA_HOME=/usr/java/jdk1.7.0_60export SCALA_HOME=/hdfs/scala-2.11.8export SPARK_WORKER_MEMORY=2gexport HADOOP_CONF_DIR=/hdfs/hadoop-2.6.0/etc/hadoopb、vi slaves配置子节点    hdp02    hdp03    hdp04c、将配置好的软件包分发至其它机器即可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个分区,并且复制因子为3kafka-topics.sh --create --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --replication-factor 3 --partitions 5 --topic my-test*查看topic#查看名为my-test的topickafka-topics.sh --describe --zookeeper hdp02:2181,hdp03:2181,hdp04:2181 --topic my-test#查看所有topickafka-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.0export 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_21export HADOOP_HOME=/hadoop_install/hadoop-1.0.4export HBASE_HOME=/hadoop_install/hbase-0.94.8export HBASE_MANAGES_ZK=trueexport 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配置   在该文件填写所有datanoded、配置完成后,将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");
原创粉丝点击