

yum update
yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce

检查安装是否成功
docker -v

创建docker目录
mkdir -p /etc/docker

编辑daemon.json
vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}
systemctl start docker

查看是否启动成功
systemctl status docker

拉取centos镜像
docker pull centos:7.5.1804
创建docker-hadoop
mkdir docker-hadoop

把jdk上传~/docker-hadoop

创建Dockerfile
vim Dockerfile
FROM centos:7.5.1804
#安装JDK
RUN mkdir -p /opt/software && mkdir -p /opt/service
ADD jdk-8u212-linux-x64.tar.gz /opt/service
#安装语言包
RUN yum -y install kde-l10n-Chinese glibc-common vim
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN echo "LANG=zh_CN.UTF-8" >> /etc/locale.conf
#解决login环境变量失效问题
RUN touch /etc/profile.d/my_env.sh
RUN echo -e "export LC_ALL=zh_CN.UTF-8\nexport JAVA_HOME=/opt/service/jdk1.8.0_212\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile.d/my_env.sh
#安装ssh服务
#更换国内阿里云yum源
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
RUN yum makecache
#安装sshd
RUN yum install -y openssh-server openssh-clients vim net-tools lrzsz
RUN sed -i '/^HostKey/'d /etc/ssh/sshd_config
RUN echo 'HostKey /etc/ssh/ssh_host_rsa_key' >> /etc/ssh/sshd_config
#生成ssh-key
RUN ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
#更改root用户登录密码
RUN echo 'root:123456' | chpasswd
#声明22端口
EXPOSE 22
#容器运行时启动sshd
RUN mkdir -p /opt
RUN echo '#!/bin/bash' >> /opt/run.sh
RUN echo '/usr/sbin/sshd -D' >> /opt/run.sh
RUN chmod +x /opt/run.sh
#CMD ["/opt/run.sh"]
CMD [ "/usr/sbin/init"]
生成基础镜像
docker build -t hadoopbase:1.0 ./
查看镜像是否成功构建
docker images

测试镜像
起一个容器测试
docker run -itd --name test -p 222:22 hadoopbase:1.0
可以新打开一个xshell窗口,IP地址和宿主机一致,端口号改为222即可连接
创建三个容器
docker create -it --name hadoop102 --privileged=true -h hadoop102 hadoopbase:1.0 /usr/sbin/init
docker create -it --name hadoop103 --privileged=true -h hadoop103 hadoopbase:1.0 /usr/sbin/init
docker create -it --name hadoop104 --privileged=true -h hadoop104 hadoopbase:1.0 /usr/sbin/init

创建脚本
先进入目录/usr/local/bin/
cd /usr/local/bin/

把pipework拷贝上传上去

创建docker.sh
vim docker.sh

#!/bin/bash
#启动容器
docker start hadoop102
docker start hadoop103
docker start hadoop104
#搭建网桥,下面8.8.8.80是宿主机的IP
brctl addbr br0; \
ip link set dev br0 up; \
ip addr del 8.8.8.80/24 dev ens33; \
ip addr add 8.8.8.80/24 dev br0; \
brctl addif br0 ens33; \
ip route add default via 8.8.8.1 dev br0
#睡眠5秒
sleep 5
#给容器配置ip和网关
pipework br0 hadoop102 8.8.8.102/24@8.8.8.2
pipework br0 hadoop103 8.8.8.103/24@8.8.8.2
pipework br0 hadoop104 8.8.8.104/24@8.8.8.2
增加脚本执行权限并下载工具
chmod 777 docker.sh
chmod 777 pipework
yum install bridge-utils

执行脚本
docker.sh
用xshell连接三个容器

配置主机和ip映射,三台容器都需要执行
vim /etc/hosts
配置如下
8.8.8.102 hadoop102
8.8.8.103 hadoop103
8.8.8.104 hadoop104

配置免密登录
设置公钥和私钥(此步骤需要在三台容器都执行)
#输入命令后一直按回车
ssh-keygen -t rsa
拷贝公钥(此步骤需要在三台容器都执行)
#输入命令之后会输入yes,然后输入密码
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
在三台机子都运行如下命令
#安装所需要的工具
yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
创建分发文件脚本(写在hadoop102上102是我们的主机)
cd ~
mkdir bin
cd bin
touch my_rsync.sh
#提升权限
chmod 744 my_rsync.sh
vim my_rsync.sh
#!/bin/bash
#参数预处理
if [ $# -lt 1 ]
then
echo '参数不能为空!!!'
exit
fi
#遍历集群中的机器一次分发内容
for host in hadoop103 hadoop104
do
#依次分发内容
for file in $@
do
#判断当前文件是否存在
if [ -e $file ]
then
#存在
#1.获取当前文件的目录结构
pdir=$(cd -P $(dirname $file); pwd)
#2.获取当前的文件名
fname=$(basename $file)
#3.登录目标机器,创建同一目录结构
ssh $host "mkdir -p $pdir"
#4.依次把要分发的文件或目录进行分发
rsync -av $pdir/$fname $host:$pdir
else
#不存在
echo "$file 不存在"
exit
fi
done
done
将hadoop导入到/opt/software文件下(hadoop102上操作)
cd /opt/software/

将其解压到/opt/service/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/service/
进入目录查看
cd /opt/service/

将hadoop添加到环境变量
第一步到hadoop家目录下获取路径
cd /opt/service/hadoop-3.1.3/
pwd

第二步:打开/etc/profile.d/my_env.sh文件
vim /etc/profile.d/my_env.sh
第三步:在my_env.sh中添加如下配置
#HADOOP_HOME
export HADOOP_HOME=/opt/service/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADDOP_HOME/sbin
第四步:刷新配置文件
source /etc/profile.d/my_env.sh
修改配置文件,进入$HADOOP_HOME/etc/hadoop
cd $HADOOP_HOME/etc/hadoop
修改core-site.xml
vim core-site.xml
修改内容如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9820</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/service/hadoop-3.1.3/data</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
配置hdfs-site.xml
vim hdfs-site.xml
文件配置如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
配置yarn-site.xml
vim yarn-site.xml
文件配置如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
配置mapred-site.xml
vim mapred-site.xml
配置如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
把文件分发到各个主机(使用前面所写的分发脚本)
cd $HADOOP_HOME
my_rsync.sh /opt/service/hadoop-3.1.3/
#把环境变量配置也分发过去,因为我们图方便用的root用户登录,所以可以直接用分发脚本
my_rsync.sh /etc/profile.d/my_env.sh
格式化namenode
cd $HADOOP_HOME
hdfs namenode -format
配置群起脚本(hadoop102上执行下面步骤)
先修改配置
vim /opt/service/hadoop-3.1.3/etc/hadoop/workers
配置内容如下(切记不能有然后空格和空行)
hadoop102
hadoop103
hadoop104
分发刚才修改之后的文件
my_rsync.sh /opt/service/hadoop-3.1.3/etc/hadoop/workers
回到home目录,并创建编写脚本
cd ~/bin
touch my_cluster.sh
chmod 744 my_cluster.sh
vim my_cluster.sh
脚本内容如下
#!/bin/bash
if [ $# -lt 1 ]
then
echo '参数不能为空!!!'
exit
fi
case $1 in
"start")
#启动HDFS集群
echo "===========启动HDFS集群============"
ssh hadoop102 /opt/service/hadoop-3.1.3/sbin/start-dfs.sh
#启动YARN集群
echo "===========启动YARN集群============"
ssh hadoop103 /opt/service/hadoop-3.1.3/sbin/start-yarn.sh
;;
"stop")
#启动HDFS集群
echo "===========停止HDFS集群============"
ssh hadoop102 /opt/service/hadoop-3.1.3/sbin/stop-dfs.sh
#启动YARN集群
echo "===========停止YARN集群============"
ssh hadoop103 /opt/service/hadoop-3.1.3/sbin/stop-yarn.sh
;;
*)
echo '参数错误!!!'
;;
esac
在环境变量中添加如下几个配置
vim /etc/profile
#添加在末尾
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
使用分发脚本把/etc/profile分发下去,并source /etc/profile(三台机子都需要执行source命令)
my_rsync.sh /etc/profile
source /etc/profile
在$HADOOP_HOME/sbin路径下查找start-dfs.sh和stop-dfs.sh两个文件,在其顶部都添加上
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
顺便在start-yarn.sh和stop-yarn.sh两个文件顶部也分别加上
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
然后使用分发脚本把sbin分发下去
my_rsync.sh /opt/service/hadoop-3.1.3/sbin/*
编写一个脚本方便查看集群状态
cd ~/bin
vim my_jps.sh
内容如下
#!/bin/bash
#查看集群中所有的状态
for host in hadoop102 hadoop103 hadoop104
do
echo "=========$host========="
ssh $host jps
done
chmod 744 my_jps.sh
在hadoop102上运行测试
#就使用刚才所写的群起脚本
my_cluster.sh start
在物理机上访问8.8.8.102:9870

如果有3个就证明成功,建议在此保留一份快照
1.1查自带的软件
#如果查询有没有结果就可以跳过卸载步骤
rpm -qa | grep -E mysql\|mariadb
1.2卸载
#后面的mariadb-libs-5.5.68-1.el7.x86_64是前一步查询出的结果
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
上传MySQL软件包
cd /opt/software/
在/opt/software/目录下创建一个文件来收纳tar包的解压文件
mkdir mysql-rpm
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C ./mysql-rpm/

到刚才解压到的包
cd /opt/software/mysql-rpm/
#安装依赖,防止MySQL安装报错
yum install -y libaio numactl
#安装MySQL,严格按照顺序安装
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
检查是否安装完成
rpm -qa | grep mysql

初始化数据库
mysqld --initialize --user=mysql
启动MySQL服务
systemctl start mysqld
查看MySQL状态

查看临时密码
cat /var/log/mysqld.log | grep password

复制好刚才查看到的临时密码,登录MySQL
#不建议把刚才复制的密码直接粘贴到-p之后,建议下面命令回车之后再粘贴密码
mysql -uroot -p

修改密码
set password = password('123456');

修改远程连接,修改之后就可以使用Navicat连接MySQL
use mysql;
update user set host = '%' where user = 'root';
flush privileges;

上传hive安装包
cd /opt/software/

解压包
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/service/
查看软件包,并修改名字
cd /opt/service/
mv apache-hive-3.1.2-bin/ hive-3.1.2
配置环境变量
vim /etc/profile.d/my_env.sh
#hive
export HIVE_HOME=/opt/service/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile.d/my_env.sh
解决日志冲突
删除jar包
cd /opt/service/hive-3.1.2/lib/
rm -rf log4j-slf4j-impl-2.10.0.jar
hive元数据配置到MySQL
cd $HIVE_HOME/conf
touch hive-site.xml
vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- Hive元数据存储的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- 元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
将MySQL的JDBC驱动拷贝到Hive的lib目录下
cd $HIVE_HOME/lib
上传驱动包
初始化源数据库
回到hadoop102,连接MySQL创建数据库
mysql -uroot -p123456

create database metastore;

回到hadoop103,初始化Hive元数据库
schematool -initSchema -dbType mysql -verbose

启动测试Hive
首先要启动Hadoop集群
#启动好Hadoop集群之后在hadoop103执行命令
hive

最后把文件和配置好的环境变量分发到hadoop104
scp -r /opt/service/hive-3.1.2/ root@hadoop104:/opt/service/
环境变量也发送到hadoop104
scp -r /etc/profile.d/my_env.sh root@hadoop104:/etc/profile.d/

此时Hive集群已完成
上传安装包到/opt/software/
cd /opt/software/

解压软件包
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/service/
修改名字
cd /opt/service/
mv apache-flume-1.9.0-bin/ flume-1.9.0

配置环境变量
vim /etc/profile.d/my_env.sh
#flume
export FLUME_HOME=/opt/service/flume-1.9.0
export PATH=$PATH:$FLUME_HOME/bin

source /etc/profile.d/my_env.sh
解决与Hadoop的冲突
cd $FLUME_HOME/lib
rm -rf guava-11.0.2.jar
到此就已经安装完成
先停掉Hadoop集群
#在hadoop102执行
my_cluster.sh stop
上传软件包到/opt/software/
cd /opt/software/
解压软件包
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/service/
修改解压之后的名字
cd /opt/service/
mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7

创建数据目录
cd /opt/service/zookeeper-3.5.7/
mkdir zkData
修改配置文件
cd /opt/service/zookeeper-3.5.7/conf/
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改dataDir
dataDir=/opt/service/zookeeper-3.5.7/zkData
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

给集群配标号
cd /opt/service/zookeeper-3.5.7/zkData/
touch myid
vim myid
在文件中输入2

分发文件,讲zookeeper分发到集群
cd /opt/service/
my_rsync.sh zookeeper-3.5.7/

到另外两个容器中修改myid文件,hadoop103对应3,hadoop104对应4
cd /opt/service/zookeeper-3.5.7/zkData/
vim myid


封装zookeeper集群启停脚本(hadoop102容器上操作)
cd ~/bin/
touch zk_cluster.sh
chmod 744 zk_cluster.sh
vim zk_cluster.sh
#!/bin/bash
if [ $# -lt 1 ]
then
echo '参数不能为空!!!'
exit
fi
for host in hadoop102 hadoop103 hadoop104
do
case $1 in
"start")
echo "$1*****$host*******ZK**********"
ssh $host /opt/service/zookeeper-3.5.7/bin/zkServer.sh $1
;;
"stop")
echo "$1*****$host*******ZK**********"
ssh $host /opt/service/zookeeper-3.5.7/bin/zkServer.sh $1
;;
"status")
echo "$1*****$host*******ZK**********"
ssh $host /opt/service/zookeeper-3.5.7/bin/zkServer.sh $1
;;
*)
echo '参数有误!!!'
exit
;;
esac
done
到此zookeeper集群就搭建完成
上传软件包到hadoop102的/opt/software/目录下
cd /opt/software/

解压安装包
tar -zxvf hbase-2.0.5-bin.tar.gz -C /opt/service/
配置环境变量
vim /etc/profile.d/my_env.sh
#hbase
export HBASE_HOME=/opt/service/hbase-2.0.5
export PATH=$PATH:$HBASE_HOME/bin

source /etc/profile.d/my_env.sh
修改配置文件
#先到目录下
cd /opt/service/hbase-2.0.5/conf/
vim hbase-env.sh
打开export HBASE_MANAGES_ZK=false配置

vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop102:9820/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop102,hadoop103,hadoop104</value>
</property>
</configuration>
vim regionservers
hadoop102
hadoop103
hadoop104

分发文件
cd /opt/service/
my_rsync.sh hbase-2.0.5/
my_rsync.sh /etc/profile.d/my_env.sh
启动测试
#启动Hadoop集群
my_cluster.sh start
#启动zookeeper集群
zk_cluster.sh start
#启动Hbase
start-hbase.sh

在物理机访问8.8.8.102:16010

若进程和我一样,并且能访问web那个界面证明hbase就安装成功了
我们在hadoop103上配置
上传软件包到/opt/software/
cd /opt/software/
解压软件包
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/service/
修改名字
mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7
配置环境变量
vim /etc/profile.d/my_env.sh
#sqoop
export SQOOP_HOME=/opt/service/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin

source /etc/profile.d/my_env.sh
修改配置文件
cd $SQOOP_HOME/conf
#重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh

拷贝jdbc驱动到sqoop的lib
#到了这个目录上传驱动
cd $SQOOP_HOME/lib
验证连接
sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 123456

如此便成功安装sqoop
上传软件包到/opt/software/
cd /opt/software/
解压软件包
tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/service/
修改名字
cd /opt/service/
mv kafka_2.11-2.4.1/ kafka
配置环境变量
vim /etc/profile.d/my_env.sh
#kafka
export KAFKA_HOME=/opt/service/kafka
export PATH=$PATH:$KAFKA_HOME/bin

分发文件(分发完之后三个容器都运行一下 source /etc/profile.d/my_env.sh)
my_rsync.sh /etc/profile.d/my_env.sh
修改配置文件
cd $KAFKA_HOME/config
vim server.properties
修改broker.id
broker.id=2

修改log.dirs
log.dirs=/opt/service/kafka/logs

修改zookeeper.connect
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

分发文件
cd /opt/service/
my_rsync.sh kafka/
修改另外两个容器的broker.id
到hadoop103
vim /opt/service/kafka/config/server.properties

到hadoop014
vim /opt/service/kafka/config/server.properties

启动测试
编写群起脚本
cd ~/bin/
touch kafka_all.sh
chmod 744 Kafka_all.sh
vim kafka_all.sh
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
ssh $host kafka-server-start.sh -daemon /opt/service/kafka/config/server.properties
done
启动之前一定要先启动zookeeper,可以先查看状态(只启动zookeeper就可以了,其他东西尽量关掉)
my_jps.sh

启动kafka
kafka_all.sh
#查看所有jps
my_jps.sh

如果和我进程一样就说明成功安装好了kafka
上传文件到/opt/software
cd /opt/software
解压文件
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/service/
修改文件名
cd /opt/service
mv spark-3.0.0-bin-hadoop3.2/ spark-standalone
修改配置文件
cd /opt/service/spark-standalone/conf/
#修改文件名
mv slaves.template slaves
vim slaves
hadoop102
hadoop103
hadoop104

mv spark-env.sh.template spark-env.sh
vim spark-env.sh
export JAVA_HOME=/opt/service/jdk1.8.0_212
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077

分发文件
cd /opt/service/
my_rsync.sh spark-standalone/
启动集群
cd /opt/service/spark-standalone/
sbin/start-all.sh
使用my_jps.sh查看进程

访问web ui
8.8.8.102:8080

如此便安装成功
上传文件到/opt/software/
cd /opt/software/
解压文件
tar -zxvf redis-5.0.2.tar.gz -C /opt/service/
进入解压目录执行make命令
#先下载依赖包
yum -y install gcc automake autoconf libtool make
cd /opt/service/redis-5.0.2/
make
执行make install 创建快捷方式
cd /opt/service/redis-5.0.2/
make install

启动redis
redis-server

如此便完全安装成功了
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手