ubuntu 18.04安装tomcat,zookeeper,kafka,hadoop,MySQL,maxwell

事情是这样的,因为昨天发现我用的ubuntu16.04官方不维护了,以及之前就觉得不是很好用,于是升级到了18.04。如图:

但是!由于为备份升级前忘记关闭服务,上面装好的东西所剩无几。

于是我重装了。。。

如何启动

1. Java 环境(JDK)

你的系统已安装 jdk1.8.0_371,确保环境变量已配置:

bash 复制代码
export JAVA_HOME=/home/zhangxuanyu/jdk1.8.0_371
export PATH=$JAVA_HOME/bin:$PATH

验证:

bash 复制代码
java -version  
结果:
zhangxuanyu@ubuntu:~$ java -version
java version "1.8.0_371"

2. Apache Tomcat

(1)解压并启动

bash 复制代码
cd ~
tar -xzf apache-tomcat-8.5.100-linux.tar.gz  # 如果未解压
cd apache-tomcat-8.5.100/bin
./startup.sh  # 启动

(2)验证

bash 复制代码
curl http://localhost:8080  # 或浏览器访问

(3)停止

bash 复制代码
./shutdown.sh

3. ZooKeeper

(1)解压并配置

bash 复制代码
cd ~
tar -xzf zookeeper-3.4.14.tar.gz
cd zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg  # 创建默认配置

(2)启动

bash 复制代码
cd ../bin
./zkServer.sh start  # 启动
结果:
ZooKeeper JMX enabled by default
Using config: /home/zhangxuanyu/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

(3)验证

bash 复制代码
./zkCli.sh  # 连接本地 ZooKeeper

(4)停止

bash 复制代码
./zkServer.sh stop
结果:
ZooKeeper JMX enabled by default
Using config: /home/zhangxuanyu/zookeeper-3.4.14/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

4. Kafka

(1)解压并启动

bash 复制代码
cd ~
tar -xzf kafka_2.12-3.3.2.tgz
#先启动zookeeper
cd kafka_2.12-3.3.2
bin/kafka-server-start.sh config/server.properties

(2)验证

bash 复制代码
ps aux | grep kafka   #检查进程

(3)停止

bash 复制代码
bin/kafka-server-stop.sh
bin/zookeeper-server-stop.sh

5. Hadoop

以下是 Ubuntu 18.04 上安装 Hadoop 3.3.5 的详细步骤(基于已有的 hadoop-3.3.5.tar.gz 安装包):


1. 环境准备

安装 Java

Hadoop 依赖 Java 8/11(推荐 OpenJDK 8):

bash 复制代码
sudo apt update
sudo apt install openjdk-8-jdk -y

# 验证安装
java -version  # 应显示 "openjdk version 1.8.0_xxx"
配置 SSH 免密登录

Hadoop 本地模式需要 SSH 无密码访问:

bash 复制代码
sudo apt install openssh-server -y
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa  # 生成密钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# 测试免密登录
ssh localhost  # 首次需输入yes,之后应直接进入
exit          # 退出SSH会话

终极测试是否ok:

bash 复制代码

zhangxuanyu@ubuntu:~$ ssh localhost "echo 'SSH免密登录成功!'"结果:

bash 复制代码
ssh localhost "echo 'SSH免密登录成功'"
SSH免密登录成功

2. 安装 Hadoop

解压安装包
bash 复制代码
cd ~
tar -xzvf hadoop-3.3.5.tar.gz  # 解压到当前目录
mv hadoop-3.3.5 hadoop         # 重命名(可选)
配置环境变量

编辑 ~/.bashrc

bash 复制代码
nano ~/.bashrc

在文件末尾添加:

bash 复制代码
# Java Environment
export JAVA_HOME=/usr/lib/jnm/jdk1.8.0_371  
export PATH=$JAVA_HOME/bin:$PATH

# Hadoop Environment
export HADOOP_HOME=/home/zhangxuanyu/hadoop  
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop 
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

激活配置:

bash 复制代码
source ~/.bashrc

检查是否生效:

bash 复制代码
zhangxuanyu@ubuntu:~$ echo $HADOOP_HOME
结果:
/home/zhangxuanyu/hadoop
bash 复制代码
zhangxuanyu@ubuntu:~$ hadoop version
结果:
Hadoop 3.3.5

3. 配置 Hadoop

修改核心配置文件

进入配置目录:

bash 复制代码
cd ~/hadoop/etc/hadoop
1. hadoop-env.sh

设置 Java 路径:

bash 复制代码
echo "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> hadoop-env.sh
2. core-site.xml

配置 HDFS 地址和临时目录:

xml 复制代码
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/tmp/hadoop-tmp</value>
    </property>
</configuration>

检查:

bash 复制代码
zhangxuanyu@ubuntu:~/hadoop/etc/hadoop$ cat ~/hadoop/etc/hadoop/core-site.xml | grep -A 1 "hadoop.tmp.dir"
结果:
        <name>hadoop.tmp.dir</name>
        <value>/tmp/hadoop-tmp</value>
3. hdfs-site.xml

配置副本数(单机模式设为1):

xml 复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/tmp/hadoop/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/tmp/hadoop/datanode</value>
    </property>
</configuration>

检查:

bash 复制代码
zhangxuanyu@ubuntu:~/hadoop/etc/hadoop$ hdfs getconf -confKey dfs.replication  
1
zhangxuanyu@ubuntu:~/hadoop/etc/hadoop$ hdfs getconf -confKey dfs.namenode.name.dir  
/tmp/hadoop/namenode
zhangxuanyu@ubuntu:~/hadoop/etc/hadoop$ hdfs getconf -confKey dfs.datanode.data.dir 
/tmp/hadoop/datanode
4. mapred-site.xml

配置使用 YARN:

xml 复制代码
<configuration>
    <!-- 核心配置:声明使用YARN框架 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <!-- 临时目录设置(避免使用默认/tmp) -->
    <property>
        <name>mapreduce.cluster.temp.dir</name>
        <value>/opt/hadoop/tmp/mapred</value>
    </property>

    <!-- 内存资源限制(根据机器配置调整) -->
    <property>
        <name>mapreduce.map.memory.mb</name>
        <value>1024</value>  <!-- 每个Map任务的内存 -->
    </property>
    <property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>2048</value>  <!-- 每个Reduce任务的内存 -->
    </property>

    <!-- JVM堆内存限制(需小于上述memory.mb) -->
    <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx768m</value>  <!-- Map任务的JVM堆内存 -->
    </property>
    <property>
        <name>mapreduce.reduce.java.opts</name>
        <value>-Xmx1536m</value> <!-- Reduce任务的JVM堆内存 -->
    </property>

    <!-- 任务重试策略 -->
    <property>
        <name>mapreduce.map.maxattempts</name>
        <value>4</value>  <!-- Map任务最大重试次数 -->
    </property>
    <property>
        <name>mapreduce.reduce.maxattempts</name>
        <value>4</value>  <!-- Reduce任务最大重试次数 -->
    </property>

    <!-- 数据本地化优化 -->
    <property>
        <name>mapreduce.tasktracker.prefetch.local</name>
        <value>true</value>  <!-- 优先在数据所在节点执行任务 -->
    </property>
</configuration>
5. yarn-site.xml
xml 复制代码
<configuration>
    <!-- 你已存在的配置 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 新增关键配置 ▼▼▼ -->
    
    <!-- 1. 指定Shuffle处理类 -->
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

    <!-- 2. 定义ResourceManager主机 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>ubuntu</value> <!-- 替换为你的主节点主机名 -->
    </property>

    <!-- 3. 内存资源池配置 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>8192</value> <!-- 建议=物理内存*0.8 -->
    </property>

    <!-- 4. 关闭虚拟内存检查(避免任务被误杀) -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

    <!-- 5. 启用日志聚合 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
</configuration>

4. 初始化并启动 Hadoop

格式化 HDFS
bash 复制代码
hdfs namenode -format  # 仅首次运行需要

成功的标准:

2025-04-13 13:40:23,513 INFO common.Storage: Storage directory /tmp/hadoop/namenode has been successfully formatted.

启动 HDFS 和 YARN
bash 复制代码
start-dfs.sh      # 启动HDFS
start-yarn.sh     # 启动YARN
验证服务
  • 检查进程

    bash 复制代码
    jps

hadoop 启动成功的标志:

85201 SecondaryNameNode

84900 DataNode

86695 Jps

86264 ResourceManager

84731 NameNode

86447 NodeManager


5. 运行测试任务

创建 HDFS 目录
bash 复制代码
hdfs dfs -mkdir /input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input  # 上传测试文件
运行 MapReduce 示例
bash 复制代码
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep /input /output 'dfs[a-z.]+'
查看结果
bash 复制代码
hdfs dfs -cat /output/*

6. 停止 Hadoop

bash 复制代码
stop-yarn.sh
stop-dfs.sh

常见问题解决

  1. 端口冲突

    • 检查 900098708088 端口是否被占用:

      bash 复制代码
      sudo netstat -tulnp | grep -E '9000|9870|8088'
  2. 权限问题

    • 如果遇到权限错误,尝试:

      bash 复制代码
      sudo chown -R $USER:$USER /tmp/hadoop*
  3. 日志排查

    • 查看日志文件:

      bash 复制代码
      tail -n 100 ~/hadoop/logs/*.log

6.安装MySQL

Ubuntu 18.04 上安装 MySQL 的完整步骤如下(适用于 MySQL 5.7,Ubuntu 18.04 默认版本):


方法 1:使用 APT 安装(推荐)

1. 更新软件包列表

bash 复制代码
sudo apt update

2. 安装 MySQL Server

复制代码
sudo apt install mysql-server -y
  • 这会安装 MySQL 5.7(Ubuntu 18.04 默认版本)。

3. 运行安全配置向导

复制代码
sudo mysql_secure_installation
  • 按提示操作
    • 设置 root 密码(我设置的My@Secure123)
    • 移除匿名用户
    • 禁止远程 root 登录
    • 删除测试数据库
    • 立即刷新权限

4. 检查 MySQL 状态

bash 复制代码
sudo systemctl status mysql
  • 如果显示 active (running),说明安装成功。

进入:

bash 复制代码
sudo mysql -u root -p

输入密码后:

为了后面的Maxwell,需要修改mysql配置

bash 复制代码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]区块末尾下面加:

bash 复制代码
server_id                  = 12345
log_bin                    = /var/log/mysql/mysql-bin.log
binlog_format              = ROW
binlog_row_image           = FULL
expire_logs_days           = 10
max_binlog_size            = 100M

再重启Mysql服务:

bash 复制代码
sudo systemctl restart mysql

7. Maxwell(MySQL Binlog 监听)

(1)解压并配置

bash 复制代码
cd ~
tar -xzf maxwell-1.29.2.tar.gz
cd maxwell-1.29.2

需修改 config.properties

bash 复制代码
nano config.properties

修改为:

properties 复制代码
producer=kafka
kafka.bootstrap.servers=localhost:9092
# mysql login info
host=localhost
user=root   #mysql用户
password=My@Secure123  #mysql密码

(2)启动

bash 复制代码
bin/maxwell --config config.properties &

(3)验证

bash 复制代码
tail -f logs/maxwell.log  # 查看日志

总结

软件 启动命令 停止命令
Tomcat ./startup.sh ./shutdown.sh
Nginx ~/nginx/sbin/nginx ~/nginx/sbin/nginx -s stop
ZooKeeper ./zkServer.sh start ./zkServer.sh stop
Kafka ./kafka-server-start.sh ... ./kafka-server-stop.sh
Hadoop sbin/start-dfs.sh + start-yarn.sh sbin/stop-dfs.sh + stop-yarn.sh
Maxwell bin/maxwell --config ... kill 对应进程
相关推荐
林九生29 分钟前
【SQLSERVER】Ubuntu 连接远程 SQL Server(MSSQL)
数据库·ubuntu·sqlserver
洋芋爱吃芋头33 分钟前
hadoop中的序列化和反序列化(3)
大数据·hadoop·python
后院那片海36 分钟前
MySQL数据库操作
数据库·mysql
心碎土豆块37 分钟前
hadoop的运行模式
大数据·hadoop·分布式
Timmer丿1 小时前
kafka学习笔记(四、生产者、消费者(客户端)深入研究(三)——事务详解及代码实例)
java·笔记·学习·kafka
杨云龙UP2 小时前
SQL Server 中的 GO 及其与其他数据库的对比
数据库·sql·mysql·oracle·sqlserver
Linux运维技术栈2 小时前
MySQL 8.0 单节点部署与一主两从架构搭建实战
数据库·mysql·架构
V文宝2 小时前
大数据技术全景解析:Spark、Hadoop、Hive与SQL的协作与实战
大数据·hadoop·spark
清风来点灯3 小时前
Ubuntu22.04安装显卡驱动/卸载显卡驱动
linux·笔记·ubuntu
XQ丶YTY4 小时前
记录一下学习kafka的使用以及思路
分布式·学习·kafka