环境配置文档

修改 hostname

centOS7 以上需要这么设置,重启也有效
hostnamectl set-hostname test-x

修改 /etc/hosts

这里需要主义的地方是


4792989-2ca2b2b77805fd4c.png
image.png

配置免密ssh

  1. [Master, Slave1, Slave2]
ssh-keygen  -t   rsa   -P  '' //敲回车就行, 保证公匙一致
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys // 把自己的公匙写入authorized_keys
  1. [Master, Slave1, Slave2]
    互相拷贝
// master
ssh-copy-id root@slave1
ssh-copy-id root@slave2 
// slave1
ssh-copy-id root@master
ssh-copy-id root@slave2 
// slave2
ssh-copy-id root@master
ssh-copy-id root@slave1
  1. 测试均免密通过才算配置正确, 否则一定要检查原因并排除
ssh root@localhost
ssh root@other_server 

配置 Java

  1. 下载 java
    我这里尝试了下 wget,连不上 oracle 的服务器,最后在 windows 下下载后 scp 过去的。
  2. 配置 jdk 环境变量
    解压到 /usr/local/jdk1.8
    编辑 /etc/profile,添加下面的配置后,source /etc/profile
JAVA_HOME=/usr/local/jdk1.8
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  1. 测试 java -version 和 javac 看是否配置好了。

配置 Scala

  1. 下载最新版本 (pre-built for hadoop 2.7 and later),解压到 /usr/local/scala-2.12.8
  2. 编辑 /etc/profile,添加下面的配置后,source /etc/profile
export PATH="$PATH:/usr/local/scala-2.12.8/bin"
  1. 输入 scala 可以进入 scala 终端

安装 hadoop

  1. 下载最新版本,解压到 /usr/local/hadoop-3.1.2
  2. 修改配置文件
    2.1 core-site.xml // Hadoop整体的一些参数配置
<property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop-3.1.2/tmp</value>
</property>
<property>
     <name>fs.default.name</name>
     <value>hdfs://test-1:9000</value>
</property>

2.2 hdfs-site.xml // HDFS模块的配置

<property>
    <name>dfs.name.dir</name>
    <value>/usr/local/hadoop-3.1.2/dfs/name</value>
</property>
<property>
    <name>dfs.data.dir</name>
    <value>/usr/local/hadoop-3.1.2/dfs/data</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>

2.3 mapred-site.xml // MapReduce模块的配置
假设我的Hadoop 路径是 /usr/local/hadoop-3.0.0-beta1, 下同

<property>
    <name>mapred.job.tracker</name>
    <value>test-1:49001</value>
</property>
<property>
     <name>mapred.local.dir</name>
     <value>/usr/local/hadoop-3.1.2/var</value>
</property>
<property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
</property>
<property>
     <name>yarn.app.mapreduce.am.env</name>
     <value>/usr/local/hadoop-3.1.2</value>
</property>
<property>
     <name>mapreduce.map.env</name>
     <value>/usr/local/hadoop-3.1.2</value>
</property>
<property>
     <name>mapreduce.reduce.env</name>
     <value>/usr/local/hadoop-3.1.2</value>
</property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

2.4 yarn-site.xml // YARN模块的配置, 很重要, 稍微不注意就跑不起来。比如说内存,最简单的 wordcount 都需要超过 1GB 内存,所以低于了就跑不了。具体请参考 YARN中内存和CPU两种资源的调度和隔离

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>test-1</value>
   </property>
   <property>
        <description>The address of the applications manager interface in the RM.</description>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
   </property>
   <property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
   </property>
   <property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
   </property>
   <property>
        <description>The https adddress of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:8090</value>
   </property>
   <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
   </property>
   <property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
   </property>
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>
 <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
   </property>
<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
   </property>
   <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
   </property>
   <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>1</value>
   </property>
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
   </property>

2.5 hadoop-env.sh

补一行
export JAVA_HOME=YOUR_JAVA_HOME_PATH

2.6 works // 工作节点配置
将里面的localhost删除, 改为

test-2
test-3

2.7 sbin/start-dfs.sh sbin/stop-dfs.sh
在空白位置补

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2.8 sbin/start-yarn.sh sbin/stop-yarn.sh
在空白位置补

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
  1. scp 到所有节点,或在所有节点上执行相同配置
  2. 执行命令
在 namenode 上执行 hdfs namenode -format
然后进入 sbin 目录下
./start-all.sh

正常的话,根据配置文件不同,可能细微差别
NameNode 是 MR 的 master 节点,DataNode 是 worker;NodeManager 是 YARN 在工作节点上的,ResourceManger 是主节点。


4792989-3a462219cb8e9805.png
image.png

HDFS的管理介面, YARN 的管理介面

可以根据跑 demo 然后看报不报错,报什么错再改。

安装 spark

  1. 下载最新版本 (pre-built for hadoop 2.7 and later),解压到 /usr/local/spark-2.4.3
cd /usr/local/spark-2.4.3/conf
cp spark-env.sh.template spark-env.sh
vi spark-env.sh

export JAVA_HOME=/usr/local/jdk1.8
export SCALA_HOME=/usr/local/scala-2.12.8
export HADOOP_HOME=/usr/local/hadoop-3.1.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=test-1
SPARK_LOCAL_DIRS=/usr/local/spark-2.4.3

cp slaves.template slaves
vi slaves

test-2
test-3
  1. 分发到其它节点
scp /usr/local/spark-2.4.3 test-2:/usr/local 
scp /usr/local/spark-2.4.3 test-3:/usr/local 
  1. 执行 sbin 目录下的 start-all.sh (跟 hadoop 很像) Spark的管理介面
    4792989-687c0a3553f83970.png
    image.png

    在启动了 hadoop 的情况下,应该有这些进程在
    4792989-acb5eb9fd2a30d3f.png
    image.png
  2. 测试
    5.1 单机多线程
    ./bin/run-example SparkPi 10 --master local[2]
    5.2 Standalone 集群模式运行
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://test-1:7077 \
examples/jars/spark-examples_2.11-2.4.3.jar \
100

5.3 YARN 模式运行

./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
examples/jars/spark-examples*.jar \
10

安装 zookeeper

  1. 下载最新版本,解压到 /usr/local/zookeeper
cd /usr/local/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

#修改 data 项
dataDir=/usr/local/zookeeper/data
#附加
dataLogDir=/usr/local/zookeeper/logs
# zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,也会占用8080 端口。
admin.serverPort=4040

server.1=10.123.9.53:4001:4002
server.2=10.123.9.54:4001:4002
server.3=10.123.9.55:4001:4002

dataDir 和 dataLogDir 需要在启动前创建完成

mkdir /usr/local/zookeeper/data
mkdir /usr/local/zookeeper/logs

clientPort 为 zookeeper的服务端口
server.0、server.1、server.2 为 zk 集群中三个 node 的信息,定义格式为 hostname:port1:port2,其中 port1 是 node 间通信使用的端口,port2 是node 选举使用的端口,需确保三台主机的这两个端口都是互通的。

  1. 更改日志配置
    Zookeeper 默认会将控制台信息输出到启动路径下的 zookeeper.out 中,通过如下方法,可以让 Zookeeper 输出按尺寸切分的日志文件:
    1)修改/usr/local/zookeeper/conf/log4j.properties文件,将
    zookeeper.root.logger=INFO, CONSOLE
    改为
    zookeeper.root.logger=INFO, ROLLINGFILE
    2)修改/usr/local/zookeeper/bin/zkEnv.sh文件,将
    ZOO_LOG4J_PROP="INFO,CONSOLE"
    改为
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"

  2. 在master主机的 dataDir 路径下创建一个文件名为 myid 的文件
    1、在第一台master主机上建立的 myid 文件内容是 1,第二台slave1主机上建立的myid文件内容是 2,第三台slave2主机上建立的myid文件内容是 3。myid文件内容需要与/usr/local/zookeeper/conf/zoo.cfg中的配置的server.id的编号对应。
    2、可以先把zk文件拷贝到其他节点后,再在各自的节点上手动修改myid编号。

  3. 分发 zookeeper 到其它节点,并修改各自的myid编号

  4. 启动各节点上的 zookeeper,
    ./bin/zkServer.sh start

    4792989-3a40425e780c05fa.png
    image.png

    jps 应该能看见一个 QuorumPeerMain 进程,各节点上都有
    在各节点上执行 ./zkServer.sh status
    4792989-4289cf039fdf2345.png
    image.png

    模拟 leader 挂掉,
    4792989-32eab3eee88d93d4.png
    image.png

    模拟机器恢复后重新加入集群,
    失败。如果当掉了 leader,再加入,会加不进去。查了下,应该是3.4.X的 bug,按理说应该已经修复了。但是还有。暂不清楚。

安装 kafka

  1. 下载最新版本,解压到 /usr/local/kafka
  2. 见这篇博客。kafka 只部署了两个节点,test-2 和 test-3,分别为 10.123.9.54:9092,10.123.9.55:9092

安装 MySQL

见这篇博客。mysql 只安装在 test-3 上。
用户名 root
密码 adcLab2019

整体
test-1


4792989-882236fed100abac.png
image.png

test-2


4792989-11db5eacb6fa8649.png
image.png

test-3
4792989-a219e6604325218f.png
image.png

转载于:https://www.jianshu.com/p/59b0e230f0d5

猜你喜欢

转载自blog.csdn.net/weixin_34351321/article/details/91125366
今日推荐