准备
下载地址
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**”目录下,修改以下配置文件前,需要切换到“ KAFKAHOME/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**“目录下,修改以下配置文件前,切换到“ SPARKHOME/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
之后请自行同步至各节点