Hadoop生态&组件部署大总结


准备

下载地址

Apache参考源

中科大开源软件镜像 https://mirrors.ustc.edu.cn/apache/
清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/apache/
Apache 官方提供镜像 https://dlcdn.apache.org/

| Sqoop已不再被 Apache 维护,需要下载请前往GitHub,请参考 快捷下载 内地址

快捷下载

HADOOP https://mirrors.ustc.edu.cn/apache/hadoop/
HIVE https://mirrors.ustc.edu.cn/apache/hive/
Flume https://mirrors.ustc.edu.cn/apache/flume/
Sqoop https://github.com/apache/sqoop/releases
Kafka https://mirrors.ustc.edu.cn/apache/kafka/
Spark https://mirrors.ustc.edu.cn/apache/spark/
Hbase https://mirrors.ustc.edu.cn/apache/hbase/
Pig https://mirrors.ustc.edu.cn/apache/pig/
Zookeeper https://mirrors.ustc.edu.cn/apache/Zookeeper/

环境变量参考

Jdk

JAVA_HOME=/usr/base/jdk1.8.0_301
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=${JAVA_HOME}/bin:$PATH
export JAVA_HOME JRE_HOME CLASSPATH PATH

Scala

export SCALA_HOME=/usr/base/scala-2.11.7
export PATH=$PATH:$SCALA_HOME/bin

HADOOP

export HADOOP_HOME=/usr/base/hadoop-2.10.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

Flume

export FLUME_HOME=/usr/base/apache-flume-1.9.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
export FLUME_LOG_DIR=$FLUME_HOME/log
export PATH=$PATH:$FLUME_HOME/bin

ZooKeeper

export ZOOKEEPER_HOME=/usr/base/apache-zookeeper-3.5.9-binn
export PATH=$ZOOKEEPER_HOME/bin:$PATH

Sqoop

export SQOOP_HOME=/usr/base/apache-flume-1.9.0-bin
export PATH=$PATH:$SQOOP_HOME/bin

Hive

export HIVE_HOME=/usr/base/apache-hive-2.3.9-bin
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
export FLINK_HOME=/usr/base/flink-1.13.2
export PATH=$FLINK_HOME/bin:$PATH

Hbase

export HBASE_HOME=/usr/base/hbase-2.4.6
export PATH=$PATH:$HBASE_HOME/bin

Pig

export PIG_HOME=/usr/base/pig-0.17.0
export PATH=$PATH:$PIG_HOME/bin:$PIG_HOME/conf

Spark

export SPARK_HOME=/usr/base/spark-3.1.2-bin-without-hadoop
export PATH=$SPARK_HOME/bin:$PATH 

Hadoop

  • 「$PATH」修改为自己的路径
  • 「NAME」修改为 NameNode Host
  • 「DataNode HOST n」 修改为 DataNode Host 序列

通用操作

/etc/hosts

「IP 1」 「HOST 1」
「IP 2」 「HOST 2」
「IP 3」 「HOST 3」
..................
「IP n」 「HOST n」

~/.ssh/id_rsa

ssh-keygen -t rsa

authorized_keys

ssh-copy-id IP

masters

「NAME」

slaves

「DataNode HOST 1」

「DataNode HOST 2」

............

「DataNode HOST n」

各模式下配置文件

伪分布式

core-site.xml


	  
    
        hadoop.tmp.dir
        「$PATH」/tmp
    
	  
    
        fs.defaultFS
        hdfs://「NAME」:9000
    

完全分布式

core-site.xml


	  
    
        hadoop.tmp.dir
        「$PATH」/tmp
    
	  
    
        fs.defaultFS
        hdfs://「NAME」:9000
    

yarn-site.xml


         
    
		    yarn.resourcemanager.hostname
		    「NAME」
     

可选参数




	dfs.namenode.name.dir
	「$PATH」



	dfs.datanode.data.dir
	「$PATH」

HA分布式

Zoopkeeper 配置

/conf/zoo.cfg
dataDir=/zookeeper/data

server.myid1=「NAME 1」:2888:3888
server.myid2=「NAME 2」:2888:3888
server.myid3=「DataNode HOST 1」:2888:3888
server.myid4=「DataNode HOST 2」:2888:3888:observer
myid
ssh 「NAME 1」 "echo "1" > /zookeeper/data/myid"
ssh 「NAME 2」 "echo "2" > /zookeeper/data/myid"
ssh 「DataNode HOST 1」 "echo "3" > /zookeeper/data/myid"
ssh 「DataNode HOST 2」 "echo "4" > /zookeeper/data/myid"

Hadoop 配置

core-site.xml

		
		
		    fs.defaultFS
		    hdfs://jed
		
		
		
		    hadoop.tmp.dir
		    「$PATH」/hd
		
		
		
		    ha.zookeeper.quorum
		    「$HOST」:2181,「DataNode HOST n」:2181
		

hdfs-site.xml

		
		
				dfs.nameservices
				jed
		

		
		
		  	dfs.ha.namenodes.jed
		  	nn1,nn2
		

		
		
		  	dfs.namenode.rpc-address.jed.nn1
		  	「NAME 1」:9000
		
		
		
		  	dfs.namenode.http-address.jed.nn1
		  	「NAME 1」:50070
		
		
		
		  	dfs.namenode.rpc-address.jed.nn2
		  	「NAME 2」:9000
		
		
		
		  	dfs.namenode.http-address.jed.nn2
		  	「NAME 2」:50070
		
		
		
		
		  	dfs.namenode.shared.edits.dir
		  	qjournal://「NAME 1」:8485;「NAME 2」:8485;「DataNode HOST n」:8485/jed
		
		
		
		
		  	dfs.journalnode.edits.dir
		  	「$PATH」/jd
		
		
		
		
		  	dfs.ha.automatic-failover.enabled
		  	true
		
		
		
		
		
		  	dfs.client.failover.proxy.provider.jed
		  	org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
		
		
		
		  	dfs.ha.fencing.methods
		  	
		      		sshfence
		     		shell(/bin/true)
		  	
		
		
		
		  	dfs.ha.fencing.ssh.private-key-files
		  	/root/.ssh/id_rsa
		
		
		
		  	dfs.ha.fencing.ssh.connect-timeout
		  	20000
		

mapred-site.xml

		
		
				mapreduce.framework.name
				yarn
		

yarn-site.xml



			
    	
        	yarn.resourcemanager.ha.enabled
        	true
    	

    	
    	
        	yarn.resourcemanager.cluster-id
        	Cyarn
    	

    	
    	
        	yarn.resourcemanager.ha.rm-ids
        	rm1,rm2
    	

    	
    	
        	yarn.resourcemanager.hostname.rm1
        	「HashNode HOST 1」
    	
    
    	
        	yarn.resourcemanager.hostname.rm2
        	「HashNode HOST 2」
    	
	
    	
    	
        	yarn.resourcemanager.zk-address
        	「NAME 1」:2181,「NAME 2」:2181,「HashNode HOST n」:2181
    	



Hive

设置 hive-env.sh 配置文件

进入 hive-0.12.0/conf 目录,复制 hive-env.sh.templaetehive-env.sh

cd /app/hive-0.12.0/conf
cp hive-env.sh.template hive-env.sh
sudo vi hive-env.sh

分别设置 HADOOP_HOMEHIVE_CONF_DIR 两个值:

export HADOOP_HOME=/app/hadoop-1.1.2
export HIVE_CONF_DIR=/app/hive-0.12.0/conf

设置 hive-site.xml 配置文件

复制 hive-default.xml.templaetehive-site.xml

cd /app/hive-0.12.0/conf
cp hive-default.xml.template hive-site.xml
sudo vi hive-site.xml

加入配置项

默认 metastore 在本地,添加配置改为非本地。


  hive.metastore.local
  false

修改配置项

hive 默认为 derby 数据库,需要把相关信息调整为 mysql 数据库。


    hive.metastore.uris
    thrift://hadoop:9083


    javax.jdo.option.ConnectionURL
    jdbc:mysql://hadoop:3306/hive?=createDatabaseIfNotExist=true


    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver


    javax.jdo.option.ConnectionUserName
    hive


    javax.jdo.option.ConnectionPassword
    hive

mysql驱动jar包

放置到 $HIVE_HOME/lib

mv mysql-connector-java-5.1.32-bin.jar /opt/home/apache-hive-1.2.1-bin/lib/

订正错误项

hive.metastore.schema.verification 配置项值修改为 false。

 
   hive.metastore.schema.verification
   false
 

/app/hive-0.12.0/conf/hive-site.xml 文件中的大概在 2000 行位置左右

把原来的 auth 修改为 auth,如下所示:

 
    hive.server2.thrift.sasl.qop
    auth
  

Flume

设置 flume-env.sh 配置文件

$FLUME_HOME/conf 下复制改名 flume-env.sh.templateflume-env.sh,修改 conf/ flume-env.sh 配置文件

cd /app/flume-1.5.2/conf
cp flume-env.sh.template flume-env.sh
sudo vi flume-env.sh

修改配置文件内容

JAVA_HOME= /app/lib/jdk1.7.0_55
JAVA_OPTS="-Xms100m -Xmx200m -Dcom.sun.management.jmxremote"

Sqoop

设置 bin/configure-sqoop 配置文件

修改 bin/configure-sqoop 配置文件。

cd /app/sqoop-1.4.5/bin
sudo vi configure-sqoop

注释掉 HBase 和 Zookeeper 等检查(除非使用 HBase 和 Zookeeper 等 HADOOP 上的组件)。

设置 conf/sqoop-env.sh 配置文件

如果不存在 sqoop-env.sh 文件,复制 sqoop-env-template.sh 文件,然后修改 sqoop-env.sh 配置文件。

cd /app/sqoop-1.4.5/conf
cp sqoop-env-template.sh sqoop-env.sh
sudo vi sqoop-env.sh

设置 hadoop 运行程序所在路径和 hadoop-*-core.jar 路径(Hadoop1.X 需要配置

export HADOOP_COMMON_HOME=/app/hadoop-1.1.2
export HADOOP_MAPRED_HOME=/app/hadoop-1.1.2

编译配置文件 sqoop-env.sh 使之生效。


Kafka

Kafka所有的配置文件都在“$KAFKA_HOME/config”目录下,修改以下配置文件前,需要切换到“$KAFKA_HOME/config”目录。

cd $KAFKA_HOME/config 

修改server.properties文件

vim server.properties

内容修改如下:

broker.id=0

port=6667

host.name=agent1

log.dirs=/data/data1/kafka

zookeeper.connect=agent1:2181,agent2:2181,agent3:2181

| 其中,参数host.name可填写agent1对应的IP地址log.dirs为实际的存储数据路径

修改节点相关参数。

登录agent2,修改server.properties。

vim server.properties

内容修改如下:

broker.id=1
host.name=agent2 #可填对应的IP地址

登录agent3,修改server.properties。

vim server.properties

内容修改如下:

broker.id=2
host.name=agent3 #可填对应的IP地址

Spark

Spark所有的配置文件都在“$SPARK_HOME/conf“目录下,修改以下配置文件前,切换到“$SPARK_HOME/conf”目录。

cd $SPARK_HOME/conf 

修改spark-env.sh

  1. 以spark-env.sh.template为模板,拷贝一份命名为spark-env.sh。
cp spark-env.sh.template spark-env.sh 
  1. 编辑spark-env.sh文件。
export JAVA_HOME=/usr/local/jdk8u252-b09
export HADOOP_HOME=/usr/local/hadoop 
export SCALA_HOME=/usr/local/scala 
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop export HDP_VERSION=3.1.0 

修改spark-defaults.conf

修改文件

echo "spark.master                     yarn" >> spark-defaults.conf
echo "spark.eventLog.enabled           true" >> spark-defaults.conf
echo "spark.eventLog.dir               hdfs://server1:9000/spark2-history" >> spark-defaults.conf
echo "spark.eventLog.compress          true" >> spark-defaults.conf
echo "spark.history.fs.logDirectory    hdfs://server1:9000/spark2-history" >> spark-defaults.conf

同步hadoop的core-site.xml和hdfs-site.xml

同步文件

cp /usr/local/hadoop/etc/hadoop/core-site.xml /usr/local/spark/conf 
cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/spark/conf 

同步mariadb-java-client包

同步文件

cp /usr/local/hive/lib/mariadb-java-client-2.3.0.jar /usr/local/spark/jars 

Hbase

HBase所有的配置文件都在“HBASE_HOME/conf”目录下,修改以下配置文件前,切换到“HBASE_HOME/conf”目录。

cd $HBASE_HOME/conf 

修改hbase-env.sh

修改环境变量JAVA_HOME为绝对路径,HBASE_MANAGES_ZK设为false。

export JAVA_HOME=/usr/local/jdk8u252-b09 
export HBASE_MANAGES_ZK=false 
export HBASE_LIBRARY_PATH=/usr/local/hadoop/lib/native 

修改hbase-site.xml

vim hbase-site.xml

添加或修改configuration标签范围内的部分参数。


    
        hbase.rootdir
        hdfs://server1:9000/HBase
    
    
        hbase.tmp.dir
        /usr/local/hbase/tmp
    
    
        hbase.cluster.distributed
        true
    
    
        hbase.unsafe.stream.capability.enforce
        false
    
    
        hbase.zookeeper.quorum
        agent1:2181,agent2:2181,agent3:2181
    
    
        hbase.unsafe.stream.capability.enforce
        false
    

修改regionservers

vim regionservers 

将regionservers文件内容替换为agent节点IP(可用主机名代替)。

agent1
agent2
agent3

拷贝hdfs-site.xml

拷贝hadoop目录下的的的hdfs-site.xml文件到“hbase/conf/”目录,可选择软链接或拷贝。

cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hbase/conf/hdfs-site.xml

之后请自行同步至各节点