准备
下载地址
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
Flink
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
<configuration> <!-- 缓存目录 --> <property> <name>hadoop.tmp.dir</name> <value>「$PATH」/tmp</value> </property> <!-- 指定 NameNode --> <property> <name>fs.defaultFS</name> <value>hdfs://「NAME」:9000</value> </property> </configuration>
完全分布式
core-site.xml
<configuration> <!-- 缓存目录 --> <property> <name>hadoop.tmp.dir</name> <value>「$PATH」/tmp</value> </property> <!-- 指定 NameNode --> <property> <name>fs.defaultFS</name> <value>hdfs://「NAME」:9000</value> </property> </configuration>
yarn-site.xml
<configuration> <!-- 指定Yarn的(ResourceManager)地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>「NAME」</value> </property> <configuration>
可选参数
<!-- hdfs-site.xml --> <proterty> <name>dfs.namenode.name.dir</name> <value>「$PATH」</value> </proterty> <proterty> <name>dfs.datanode.data.dir</name> <value>「$PATH」</value> </proterty>
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
<configuration> <!--指定hdfs nameservice--> <property> <name>fs.defaultFS</name> <value>hdfs://jed</value> </property> <!--指定hadoop工作目录--> <property> <name>hadoop.tmp.dir</name> <value>「$PATH」/hd</value> </property> <!--指定zookeeper集群访问地址--> <property> <name>ha.zookeeper.quorum</name> <value>「$HOST」:2181,「DataNode HOST n」:2181</value> </property> </configuration>
hdfs-site.xml
<configuration> <!--与core-site.xml中一致的hdfs nameservice--> <property> <name>dfs.nameservices</name> <value>jed</value> </property> <!--jed的NameNode,nn1,nn2 --> <property> <name>dfs.ha.namenodes.jed</name> <value>nn1,nn2</value> </property> <!-- 「NAME 1」 的 RPC 通信地址 --> <property> <name>dfs.namenode.rpc-address.jed.nn1</name> <value>「NAME 1」:9000</value> </property> <!-- nn1 的 http 通信地址 --> <property> <name>dfs.namenode.http-address.jed.nn1</name> <value>「NAME 1」:50070</value> </property> <!-- nn2 的 RPC 通信地址 --> <property> <name>dfs.namenode.rpc-address.jed.nn2</name> <value>「NAME 2」:9000</value> </property> <!-- nn2 的 http 通信地址 --> <property> <name>dfs.namenode.http-address.jed.nn2</name> <value>「NAME 2」:50070</value> </property> <!-- 指定NameNode的edits元数据在JournalNode 上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://「NAME 1」:8485;「NAME 2」:8485;「DataNode HOST n」:8485/jed</value> </property> <!-- 指定 JournalNode 在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>「$PATH」/jd</value> </property> <!-- 开启 NameNode 失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <!-- 此处配置较长,在安装的时候切记检查不要换行--> <property> <name>dfs.client.failover.proxy.provider.jed</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制占用一行--> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence shell(/bin/true) </value> </property> <!-- 使用 sshfence 隔离机制时需要 ssh 免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <!-- 配置 sshfence 隔离机制超时时间(20s) --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>20000</value> </property> </configuration>
mapred-site.xml
<configuration> <!-- 指定mapreduce框架为yarn方式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <!-- 开启 RM 高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 指定 RM 的 cluster id,可以自定义--> <property> <name>yarn.resourcemanager.cluster-id</name> <value>Cyarn</value> </property> <!-- 指定 RM 的名字,可以自定义 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 分别指定 RM 的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>「HashNode HOST 1」</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>「HashNode HOST 2」</value> </property> <!-- 指定 zk 集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>「NAME 1」:2181,「NAME 2」:2181,「HashNode HOST n」:2181</value> </property> </configuration>
Hive
设置 hive-env.sh 配置文件
进入 hive-0.12.0/conf 目录,复制 hive-env.sh.templaete 为 hive-env.sh:
cd /app/hive-0.12.0/conf cp hive-env.sh.template hive-env.sh sudo vi hive-env.sh
分别设置 HADOOP_HOME 和 HIVE_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.templaete 为 hive-site.xml:
cd /app/hive-0.12.0/conf cp hive-default.xml.template hive-site.xml sudo vi hive-site.xml
加入配置项
默认 metastore 在本地,添加配置改为非本地。
<property> <name>hive.metastore.local</name> <value>false</value> </property>
修改配置项
hive 默认为 derby 数据库,需要把相关信息调整为 mysql 数据库。
<property> <name>hive.metastore.uris</name> <value>thrift://hadoop:9083</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop:3306/hive?=createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property>
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。
<property> <name>hive.metastore.schema.verification</name> <value>false</value> </property>
把 /app/hive-0.12.0/conf/hive-site.xml 文件中的大概在 2000 行位置左右
把原来的 <value>auth</auth> 修改为 <value>auth</value>,如下所示:
<property> <name>hive.server2.thrift.sasl.qop</name> <value>auth</auth> </property>
Flume
设置 flume-env.sh 配置文件
在 $FLUME_HOME/conf 下复制改名 flume-env.sh.template 为flume-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所有的配置文件都在“**K A F K A H O M E / c o n f i g ∗ ∗ ” 目 录 下 , 修 改 以 下 配 置 文 件 前 , 需 要 切 换 到 “ KAFKA_HOME/config**”目录下,修改以下配置文件前,需要切换到“KAFKA
H
OME/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所有的配置文件都在“**S P A R K H O M E / c o n f ∗ ∗ “ 目 录 下 , 修 改 以 下 配 置 文 件 前 , 切 换 到 “ SPARK_HOME/conf**“目录下,修改以下配置文件前,切换到“SPARK
H
OME/conf∗∗“目录下,修改以下配置文件前,切换到“SPARK_HOME/conf”目录。
cd $SPARK_HOME/conf
修改spark-env.sh
以spark-env.sh.template为模板,拷贝一份命名为spark-env.sh。
cp spark-env.sh.template spark-env.sh
编辑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标签范围内的部分参数。
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://server1:9000/HBase</value> </property> <property> <name>hbase.tmp.dir</name> <value>/usr/local/hbase/tmp</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>agent1:2181,agent2:2181,agent3:2181</value> </property> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> </configuration>
修改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
之后请自行同步至各节点