数据仓库与大数据工程实验一笔记本安装集群操作文档V2.3.pdf
数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 数据仓库与大数据工程 笔记本虚拟机搭建 Hadoop 集群操作文档 网络科学与智能系统研究所 2018 年 1 月 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 修订记录 版本 修订 号 状态 简要说明修订内容和范围 修订日 期 修订人 V1.0 A 完成 MySQL,zookeeper,Kafka 三部分 2018.1.30 宋超 V1.1 M 修改 SSH 章节的 bug 2018.1.30 宋超 V1.2 A 完成所有的 Hadoop 集群的安装说明 2018.1.31 宋超 V1.3 A 添加了封面、目录、页眉 2018.1.31 宋超 V1.4 A 新增了第二块网卡的配置方式(3.1 到 3.2.3) 2018.1.31 宋超 V1.5 A 修改 hadoop 安装过程的配置文件内容,增加 HDFS 的初始化, 修改 hive 的配置文件,增加 spark 安装过程的描述 2018.2.5 曹仲、 宋超 V1.6 A 增加了架构图与引言 2018.2.26 宋超 V1.7 A 增加了对于虚拟机网络配置的解释 2018.3.5 宋超 V1.8 M 对 ZooKeeper 以及 Kafka 配置代码中的一些问题进行了修改 2018.3.6 纪宇泽 V1.9 M 修改 HBase 的环境变量设置, 修改 Storm 配置文件内容 2018.3.9 王贝贝 V1.91 M 修改了网卡配置的内容 2018.3.12 宋超 V1.92 M 修改了新建 hadoop 用户的内容 2018.3.12 宋超 V1.93 M 修改了错别字 2018.3.14 宋超 V1.94 M 修改了改 hosts 的描述 2018.3.14 宋超 V1.95 M 修改了 Hive 的启动条件 2018.3.15 宋超 V1.96 A 增加了 3.2.5 检查虚拟机间能否正常通信的内容 2018.3.16 宋超 V2.0 A 增加了各组件的测试内容以及 web 界面的进入方法 2018.3.17 宋超 V2.01 M 修复了同步 hbase 工作目录的小 bug 2018.3.17 宋超 V2.02 M 增加了使 hive 用户可以在 cluster2 上登陆 MySQL 的命令 2018.3.19 宋超 V2.03 M 修复了小 bug 2018.3.27 宋超 V2.1 M 增加 Kafka 的新配置 2018.3.29 宋超 V2.2 M 修改了 MySQL 的安装方法 2018.6.10 宋超 修复了小 bug 宋超 V2.3 M 2018.6.17 注:修订记录在体系文件发布后换版时使用,修订状态栏填写:A—增加,M—修改,D—删除 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 目录 1. 2. 3. 概述....................................................................................................................................................................... 1 服务列表............................................................................................................................................................... 2 搭建步骤............................................................................................................................................................... 4 3.1 安装虚拟机.................................................................................................................................................... 4 3.2 准备工作........................................................................................................................................................ 6 3.2.1 关闭防火墙和 Selinux ....................................................................................................................... 6 3.2.2 安装软件............................................................................................................................................. 6 3.2.3 检查网卡是否开机自启..................................................................................................................... 6 3.2.4 修改 hosts ........................................................................................................................................... 8 3.2.5 检查网络是否正常............................................................................................................................. 8 3.2.6 新建 hadoop 用户 ............................................................................................................................... 9 3.2.7 生成 ssh 密钥并分发 ....................................................................................................................... 10 3.2.8 安装 NTP 服务 ................................................................................................................................. 10 3.3 安装 MySQL ............................................................................................................................................... 11 3.3.1 安装................................................................................................................................................... 11 3.3.2 测试................................................................................................................................................... 12 3.4 安装 JDK ..................................................................................................................................................... 13 3.4.1 安装................................................................................................................................................... 13 3.4.2 测试................................................................................................................................................... 14 3.5 安装 ZooKeeper........................................................................................................................................... 14 3.6 安装 Kafka ................................................................................................................................................... 17 3.6.1 安装................................................................................................................................................... 17 3.6.2 测试................................................................................................................................................... 18 3.6.3 可能遇到的问题............................................................................................................................... 19 3.7 安装 Hadoop ................................................................................................................................................ 20 3.7.1 安装................................................................................................................................................... 20 3.7.2 测试................................................................................................................................................... 25 3.8 安装 HBase .................................................................................................................................................. 29 3.8.1 安装................................................................................................................................................... 29 3.8.2 测试................................................................................................................................................... 32 3.8.3 可能遇到的问题............................................................................................................................... 33 3.9 安装 Hive ..................................................................................................................................................... 33 3.9.1 安装................................................................................................................................................... 33 3.9.2 测试................................................................................................................................................... 36 3.10 安装 Scala .................................................................................................................................................. 37 3.11 安装 Spark ................................................................................................................................................. 37 3.11.1 安装 ................................................................................................................................................. 37 3.11.2 测试 ................................................................................................................................................. 39 3.12 安装 Storm ................................................................................................................................................. 40 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 1. 概述 《数据仓库与大数据工程》实验一需要学生在笔记本上搭建 Hadoop 集群,本文档对笔 记本上创建虚拟机搭建 Hadoop 集群的步骤进行了说明。包含所有需要安装的软件与服务 的版本,安装路径,安装方法等。 主要流程为:安装虚拟机管理程序,创建三台虚拟服务器,在三台虚拟服务器上搭建 以 Hadoop 集群为核心的大数据平台。 1 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 2. 服务列表 实验一要求学生搭建的大数据平台以 Hadoop 为核心,HDFS、MySQL、HBase 组成了存储系统,通过 Kafka 实时接入数据,使用 Storm 对数据进行实时分析,Map/Reduce 和 Spark 负责离线数据分析。Zookeeper 负责为分布式应用程序协调服务。 图 2-1 大数据平台架构图 用于搭建笔记本集群的虚拟机工具为 Oracle VM VirtualBox 5.1.26,使用其他工具也可用。 Hadoop 大数据平台所需工具、软件包、版本及安装目录见表 2-1. 表 2-1 Hadoop 大数据平台所需的软件包 软件包名 软件名称 版本 安装目录 1.7.80 /usr/local/jdk1.7.0_80 MySQL 5.6.37 /usr/local/mysql zookeeper-3.4.6.tar.gz Zookeeper 3.4.6 /usr/local/zookeeper-3.4.6 kafka_2.10-0.8.2.1.tgz Kafka 2.10.-0.8.2.1 /usr/local/kafka_2.10.-0.8.2.1 jdk-7u80-linux-x64.tar.gz java 软件开发工具 包 mysql-5.6.37-linux-glibc2.12x86_64.tar.gz 2 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 hadoop-2.6.5.tar.gz Hadoop 2.6.5 /usr/local/hadoop-2.6.5 hbase-1.2.6-bin.tar.gz HBase 1.2.6 /usr/local/hbase-1.2.6 apache-hive-1.1.0-bin.tar.gz 1.1.0 /usr/local/apache-hive-1.1.0-bin mysql-connector-java-5.1.43-bin.jar Hive MySQL JDBC 驱动 scala-2.10.6.tgz Scala 2.10.6 /usr/local/scala-2.10.6 spark-1.6.3-bin-hadoop2.6.tgz Spark 1.6.3 /usr/local/spark-1.6.3-binhadoop2.6 apache-storm-1.1.1.tar.gz Storm 1.1.1 /usr/local/apache-storm-1.1.1 5.1.43 所有虚拟机上需要安装的软件与服务如表 2-2 所示。 表 2-2 虚拟机运行的服务列表 主机名 服务 cluster1 zookeeper, Kafka, HDFS(主), YARN(主), HBase(主), Hive, Spark(主), storm(主) cluster2 zookeeper, Kafka, MySQL, HDFS, YARN, HBase, Hive, Spark, storm cluster3 zookeeper, Kafka, HDFS, YARN, HBase, Hive, Spark, storm 3 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 3. 搭建步骤 3.1 安装虚拟机 注意:请关闭 360 安全卫士等软件! 下载系统镜像,可从交大知行论坛上下载,CentOS-7-x86_64-Minimal-1511.iso。 虚拟机软件使用 Oracle VM VirtualBox 5.1.26。 网络设置:选择左上角的管理->全局设定->网络->NAT 网络->右侧添加网卡->双击新增的网卡->网络 CIDR: 10.0.2.0/24-> 选 OK-> 仅 主 机 (Host-Only) 网 络 -> 右 侧 添 加 网 卡 -> 双 击 新 增 的 网 卡 ->IPv4 地 址 : 192.168.56.1->IPv4 网络掩码:255.255.255.0->DHCP 服务器->取消勾选“启用服务器”->OK->点 OK 保存。 这里的 NAT 网络是为了创建出一个包含三台虚拟机的局域网环境,而 Host-Only 网络是为了使笔记本 能与虚拟机通信,这样在虚拟机成功安装后,就可以使用 putty 或 secureCRT 等 SSH 工具从笔记本连接到虚 拟机,然后将文档中提供的配置文件内容复制粘贴进去,若不配置 Host-Only 网络,本文档所有的配置文件 全部需要手动输入。 4 批注 [宋超1]: 2.03 更新 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 内存 1536M,选择现在创建虚拟硬盘,虚拟硬盘文件类型选择 VHD(虚拟硬盘),存储分配选择动态分 配(D) ,大小选择 8G,然后选择创建。 右键选择创建好的虚拟机 cluster1,选择设置 存储->没有盘片->右侧的光盘图标,选择下载好的 CentOS-7-x86_64-Minimal-1511.iso,选择 OK。选择 网络->网卡 1->启用网络连接->连接方式->NAT->界面名称->选择刚才先建立的那块虚拟网卡即可->网卡 2-> 启用网络连接->连接方式->仅主机(Host-Only)网络->界面名称->选择刚才后建立的那块虚拟网卡-> OK。 双击 cluster1 进入虚拟机,选择 Install CentOS7,选择 English->continue。 DATE&TIME,Region 选择 Asia,City 选择 Shanghai,左上角 Done。 INSTALLATION DESTINATION,点进去后直接点左上角的 Done。 NETWORK & HOST NAME,两张网卡右侧都选择 ON,下面的 Host name 改为 cluster1,左上角 Done。 选择右下角 Begin installation。 进入安装界面后选择 root password 随意。 右侧 user creation,Full name 设置为 cluster1,密码随意,不要选择 make this user administrator。 待下方进度条结束后,会有 reboot 这个选项,点击重启后,即可登陆。 再做两台这样的虚拟机分别是 cluster2 和 cluster3 即可。 5 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 3.2 准备工作 注:以下内容“//”后面的内容为下一行语句的注释, “#”后面的语句是使用 root 用户执行的, “$”后面的 语句是使用普通用户(3.2.5 创建的 hadoop 用户)执行的。红色是必须要注意的内容! 3.2.1 关闭防火墙和 Selinux 每台都要执行(我们安装的 centOS 最小版没有防火墙,在其他 centOS 上操作时必须要关闭防火墙) // 关闭防火墙和 selinux # systemctl stop firewalld.service // 禁止 firewall 开机启动 # systemctl disable firewalld.service // 开机关闭 Selinux,编辑 Selinux 配置文件 # vi /etc/selinux/config 将 SELINUX 设置为 disabled 如下: SELINUX=disabled // 重启 # reboot // 重启机器后 root 用户查看 Selinux 状态 # getenforce 3.2.2 安装软件 以下软件是安装时需要的依赖环境,安装 MySQL 时需要使用 perl 和 libaio,ntpdate 负责集群内服务器 时间,screen 用于新建后台任务。 每台都要执行 # yum install perl* # yum install ntpdate # yum install libaio # yum install screen 3.2.3 检查网卡是否开机自启 每台都要执行 // 查看网卡名,看里面一个 enp0s 开头的是多少,由于我们开启了两块网卡,注意这两张都是什么名字 // 我的网卡名分别是 enp0s3 和 enp0s8,还有一个 lo,这个可以忽略不计。 # ip addr 6 批注 [宋超2]: 2.0 更新 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 使用这条命令可以查看所有网卡的信息,注意记录每张网卡的网卡名:前面序号后面的即为网卡名。 还需记录每张网卡的 ip 地址,inet 后面的就是。 注意:此处有两张网卡,分别是 2:enp0s3 和 3:enp0s8,如果没有,可能是因为在安装系统的过程中,没有 打开网络服务,或是网卡没有设定为开机自启。 接下来编辑网卡配置文件 编辑的第一个网卡的配置文件,应该是 ip 为 10.0.2 开头的那张网卡,网卡名为 enp0s3 // 编辑网卡配置文件 # vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 // 确认 ONBOOT 为 yes,这个设置为 yes 后,该网卡会开机自启,不会开机连不上网 ONBOOT=yes 接下来编辑第二张网卡的配置文件,是 enp0s8 # vi /etc/sysconfig/network-scripts/ifcfg-enp0s8 将 BOOTPROTO 设置为 none ONBOOT=yes 新增 IPADDR=192.168.56.121(cluster2 设置为 192.168.56.122,cluster3 为 192.168.56.123) NETMASK=255.255.255.0 NETWORK=192.168.56.0 保存后关闭文件。 // 重启网络服务 # service network restart 重启成功后会出现一个绿色的 OK,失败则显示红色的 failed,若失败,则使用 reboot 重启服务器即可。 重启后,就可以使用 putty 或其他 SSH 工具连接虚拟机了。 7 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 以下以 putty 为例: 在 windows 中,下载 putty,打开后,输入 192.168.56.121 然后点击右下角的 Open,即可连接到 cluster1 上。同样的,可以使用 Filezilla 传输文件。 主机为:sftp://192.168.56.121,用户名为 root,端口号不用设定,快速连接即可。 3.2.4 修改 hosts 每台都要执行 // 记录当前 ip 地址,要记录第一张网卡的 ip 地址 # ip addr // 修改 hosts # vi /etc/hosts // 在最下面添加以下几行内容,下面的红色的 ip 地址写你用 ip addr 里面显示的第一张网卡(enp0s3)的 ip 10.0.2.6 cluster1 10.0.2.8 cluster2 10.0.2.7 cluster3 3.2.5 检查网络是否正常 // 在 cluster1 上 # ping cluster2 如果出现如下界面 8 批注 [宋3]: 2.2 更新 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 可以看到 time=多少秒,说明可以从 cluster1 连接到 cluster2,同理,检查能否连接到 cluster3,使用 Ctrl+C 中断命令 ping。 // 检查能否连接到 cluster3 # ping cluster3 如果出现如下界面 可能导致该问题的原因: 1. hosts 配置有误,hosts 中的 cluster2 的 ip 地址,与 cluster2 的实际 ip 地址不同,请返回检查 cluster2 的 ip 地址。 2. cluster2 处于关机状态,没有开机。 3.2.6 新建 hadoop 用户 每台都要执行 新建 hadoop 用户,这个用户专门用来维护集群,因为实际中使用 root 用户的机会很少,而且不安全。 // 新建 hadoop 组 # groupadd hadoop // 新建 hadoop 用户 # useradd -s /bin/bash -g hadoop -d /home/hadoop -m hadoop // 修改 hadoop 这个用户的密码 # passwd hadoop 9 批注 [宋超4]: 1.9 更新 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 3.2.7 生成 ssh 密钥并分发 只在 cluster1 上执行 // 生成 ssh 密钥(cluster1 上) ,切换到 hadoop 用户 $ ssh-keygen -t rsa 然后一路回车 // 接下来分发密钥,请仔细观察显示的内容,会让你输入 yes $ ssh-copy-id cluster1 $ ssh-copy-id cluster2 $ ssh-copy-id cluster3 3.2.8 安装 NTP 服务 // 三台都要安装 # yum install ntpdate // cluster1 上装 ntp # yum install ntp // cluster1 上执行以下操作 # vi /etc/ntp.conf 注释掉以下 4 行,也就是在这 4 行前面加# server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst 最下面加入以下内容,红色部分分别为网关和掩码 restrict default ignore restrict 10.0.2.0 mask 255.255.255.0 nomodify notrap server 127.127.1.0 批注 [宋超5]: 2.0 更新 批注 [宋6]: V2.2 更新 // 重启 ntp 服务 # service ntpd restart // 设置 ntp 服务器开机自动启动 # chkconfig ntpd on // 以下为客户端的配置(除 cluster1 外其他所有的机器,即 cluster2 和 cluster3) : 设定每天 00:00 向服务器同步时间,并写入日志 # crontab -e 输入以下内容后保存并退出: 0 0 * * * /usr/sbin/ntpdate cluster1>> /root/ntpd.log 10 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 // 手动同步时间,需要在每台机器上(除 ntp server) ,使用 ntpdate cluster1 同步时间 # ntpdate cluster1 3.3 安装 MySQL 3.3.1 安装 只在 cluster2 上做以下内容,因为我们的集群中,只有 cluster2 上需要安装一个 MySQL # yum remove mysql mysql-server mysql-libs compat-mysql51 # rm -rf /var/lib/mysql # rm -rf /etc/my.cnf 下载 mysql-5.6.37-linux-glibc2.12-x86_64 # cp mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz /usr/local/ // 解压到/usr/local/ # tar -zxvf mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz // 改名为 mysql # mv mysql-5.6.37-linux-glibc2.12-x86_64 mysql // 删除安装包 # rm mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz // 修改环境变量 # vi /etc/profile 在最下面添加 export MYSQL_HOME=/usr/local/mysql export PATH=$MYSQL_HOME/bin:$PATH // 刷新环境变量 # source /etc/profile // 新建 mysql 用户 # groupadd mysql 在/etc/group 中可以看到 # useradd -r -g mysql -s /bin/false mysql 在/etc/passwd 中可以看到 # cd /usr/local/mysql # chown -R mysql:mysql . # scripts/mysql_install_db --user=mysql // 修改当前目录拥有者为 root 用户 # chown -R root . 11 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 // 修改当前 data 目录拥有者为 mysql 用户 # chown -R mysql data # bin/mysqld_safe --user=mysql & # cd /usr/local/mysql // 登陆 mysql # bin/mysql // 登陆成功后退出即可 mysql> exit; 批注 [宋7]: V2.2 更新 // 进行 root 账户密码的修改等操作 # bin/mysql_secure_installation 首先要求输入 root 密码,由于我们没有设置过 root 密码,括号里面说了,如果没有 root 密码就直接按回车。 是否设定 root 密码,选 y,设定密码为 cluster,是否移除匿名用户:y。然后有个是否关闭 root 账户的远程 登录,选 n,删除 test 这个数据库?y,更新权限?y,然后 ok。 # cp support-files/mysql.server /etc/init.d/mysql.server // 查看 mysql 的进程号 # ps -ef | grep mysql // 如果有的话就 kill 掉,保证 mysql 已经中断运行了,一般 kill 掉/usr/local/mysql/bin/mysqld 开头的即可 # kill 进程号 批注 [宋超8]: 2.0 更新 // 启动 mysql # /etc/init.d/mysql.server start -user=mysql # exit 还需要配置一下访问权限: $ mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'cluster' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; // 关闭 mysql 的指令(不需要执行) # mysqladmin -u root -p shutdown 3.3.2 测试 mysql> create database test_table; mysql> use test_table; 12 批注 [宋超9]: 2.0 更新 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 mysql> create table userinfo(id int not null); mysql> insert into userinfo values(1); mysql> select * from userinfo; mysql> drop database test_table; mysql> show databases; 批注 [宋超10]: 2.0 更新 3.4 安装 JDK 3.4.1 安装 每台都要安装 $ su root # cp jdk-7u80-linux-x64.tar.gz /usr/local/ # tar -zxvf jdk-7u80-linux-x64.tar.gz // 修改环境变量 # vi /etc/profile // 添加以下内容 export JAVA_HOME=/usr/local/jdk1.7.0_80/ export JRE_HOME=/usr/local/jdk1.7.0_80/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH // 复制 jdk 到其他的服务器上 # scp -r /usr/local/jdk1.7.0_80/ cluster2:/usr/local/ # scp -r /usr/local/jdk1.7.0_80/ cluster3:/usr/local/ // cluster2 上 # vi /etc/profile // 添加以下内容 export JAVA_HOME=/usr/local/jdk1.7.0_80/ export JRE_HOME=/usr/local/jdk1.7.0_80/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH // cluster3 上 # vi /etc/profile // 添加以下内容 export JAVA_HOME=/usr/local/jdk1.7.0_80/ export JRE_HOME=/usr/local//jdk1.7.0_80/jre 13 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH 3.4.2 测试 $ java -version 可以看到 java 版本为 1.7.0_80 即为安装成功 批注 [宋超11]: 2.0 更新 批注 [宋超12]: 2.0 更新 3.5 安装 ZooKeeper 每台都要安装 // cluster1 上 将 zookeeper 解压到/usr/local 目录下,配置环境变量 # vi /etc/profile // 添加以下内容 export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6 export PATH=$ZOOKEEPER_HOME/bin:$PATH # cd /usr/local/zookeeper-3.4.6 // 在 conf 中新建 zoo.cfg 文件 # vi conf/zoo.cfg // 输入以下内容 # 客户端心跳时间(毫秒) tickTime=2000 # 允许心跳间隔的最大时间 initLimit=10 # 同步时限 syncLimit=5 # 数据存储目录 dataDir=/home/hadoop_files/hadoop_data/zookeeper # 数据日志存储目录 dataLogDir=/home/hadoop_files/hadoop_logs/zookeeper/dataLog # 端口号 clientPort=2181 # 集群节点和服务端口配置 server.1=cluster1:2888:3888 server.2=cluster2:2888:3888 server.3=cluster3:2888:3888 // 创建 zookeeper 的数据存储目录和日志存储目录 14 批注 [宋13]: 2.3 更新 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 # mkdir -p /home/hadoop_files/hadoop_data/zookeeper # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/dataLog # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/logs // 修改文件夹的权限 # chown -R hadoop:hadoop /home/hadoop_files # chown -R hadoop:hadoop /usr/local/zookeeper-3.4.6 // 在 cluster1 号服务器的 data 目录中创建一个文件 myid,输入内容为 1 // myid 应与 zoo.cfg 中的集群节点相匹配 # echo "1" >> /home/hadoop_files/hadoop_data/zookeeper/myid // 修改 zookeeper 的日志输出路径(注意 CDH 版与原生版配置文件不同) # vi bin/zkEnv.sh // 将配置文件里面的以下项替换为红字的内容 if [ "x${ZOO_LOG_DIR}" = "x" ] then ZOO_LOG_DIR="/home/hadoop_files/hadoop_logs/zookeeper/logs" fi if [ "x${ZOO_LOG4J_PROP}" = "x" ] then ZOO_LOG4J_PROP="INFO,ROLLINGFILE" fi // 修改 zookeeper 的日志配置文件 # vi conf/log4j.properties // 修改为以下内容: zookeeper.root.logger=INFO,ROLLINGFILE log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender 将这个 zookeeper-3.4.6 的目录复制到其他的两个节点上 # scp -r /usr/local/zookeeper-3.4.6 cluster2:/usr/local/ # scp -r /usr/local/zookeeper-3.4.6 cluster3:/usr/local/ // 退回 hadoop 用户 # exit // 刷新环境变量 $ source /etc/profile // 启动 zookeeper $ zkServer.sh start 15 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 // cluster2 上面 改环境变量,加入以下内容 export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6 export PATH=$ZOOKEEPER_HOME/bin:$PATH // 创建 zookeeper 的数据存储目录和日志存储目录 $ su root # mkdir -p /home/hadoop_files/hadoop_data/zookeeper # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/dataLog # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/logs // 添加 myid # echo "2" >> /home/hadoop_files/hadoop_data/zookeeper/myid // 修改文件夹的权限 # chown -R hadoop:hadoop /home/hadoop_files # chown -R hadoop:hadoop /usr/local/zookeeper-3.4.6 // 退回 hadoop 用户 # exit // 刷新环境变量 $ source /etc/profile // 启动 zookeeper $ zkServer.sh start // cluster3 上面 加环境变量 # vi /etc/profile export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6 export PATH=$ZOOKEEPER_HOME/bin:$PATH // 创建 zookeeper 的数据存储目录和日志存储目录 # mkdir -p /home/hadoop_files/hadoop_data/zookeeper # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/dataLog # mkdir -p /home/hadoop_files/hadoop_logs/zookeeper/logs // 添加 myid # echo "3" >> /home/hadoop_files/hadoop_data/zookeeper/myid // 修改文件夹的权限 # chown -R hadoop:hadoop /home/hadoop_files # chown -R hadoop:hadoop /usr/local/zookeeper-3.4.6 16 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 // 退回 hadoop 用户 # exit // 刷新环境变量 $ source /etc/profile // 启动 zookeeper(每台都要执行,而且三台要接连执行,都启动后再做下面的) $ zkServer.sh start // 三台 zookeeper 都启动后,使用 jps 命令查看进程是否启动 # jps 可以看到一个叫 QuorumPeerMain 的进程,说明 zookeeper 启动成功 // 退出 root 用户 # exit 批注 [宋超14]: 2.0 更新 // 查看 zookeeper 状态 $ zkServer.sh status 可以看到三台中有一个是 leader,两个是 follower // 关闭 zookeeper 的命令 (关机前在每台上都要执行,这里不需要执行) $ zkServer.sh stop 3.6 安装 Kafka 3.6.1 安装 // cluster1 上 kafka_2.10-0.8.2.1 解压到/usr/local //添加环境变量 export KAFKA_HOME=/usr/local/kafka_2.10-0.8.2.1 export PATH=$KAFKA_HOME/bin:$PATH // 修改配置文件 # vi /usr/local/kafka_2.10-0.8.2.1/config/server.properties // 修改下面 3 项 // 第一项:这个值要唯一,不同的机器不能相同,cluster1 就写 1,cluster2 就写 2,cluster3 就写 3 broker.id=1 // 第二项:修改日志路径 17 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 log.dirs=/home/hadoop_files/hadoop_logs/kafka // 第三项:此处要写 zookeeper 集群的 ip+端口号,逗号隔开 zookeeper.connect=cluster1:2181,cluster2:2181,cluster3:2181 // 第四项:此处要写对应机器的 ip 地址! advertised.host.name=192.168.56.121 批注 [宋超15]: 2.1 更新 //修改完环境变量,更新配置文件 #source /etc/profile // 保存退出后创建 logs 文件夹 # mkdir -p /home/hadoop_files/hadoop_logs/kafka // 修改权限 # chown -R hadoop:hadoop /home/hadoop_files # chown -R hadoop:hadoop /usr/local/kafka_2.10-0.8.2.1 // 复制文件夹 # scp -r /usr/local/kafka_2.10-0.8.2.1 cluster2:/usr/local/ # scp -r /usr/local/kafka_2.10-0.8.2.1 cluster3:/usr/local/ // cluster2 上 # vi /usr/local/kafka_2.10-0.8.2.1/config/server.properties broker.id=2 // cluster3 上 # vi /usr/local/kafka_2.10-0.8.2.1/config/server.properties broker.id=3 // 使用 hadoop 用户启动 kafka 集群 先启动 zookeeper 集群,然后在 kafka 集群中的每个节点使用 $ kafka-server-start.sh /usr/local/kafka_2.10-0.8.2.1/config/server.properties & 启动完成后按回车即可 3.6.2 测试 // 创建 topic $ kafka-topics.sh --create --zookeeper cluster1:2181,cluster2:2181,cluster3:2181 --replication-factor 3 --partitions 1 --topic mykafka // 查看 Topic: $ kafka-topics.sh --list --zookeeper cluster1:2181,cluster2:2181,cluster3:2181 18 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 此时会显示 Topic:mykafka // 查看详细信息 $ kafka-topics.sh --describe --zookeeper cluster1:2181,cluster2:2181,cluster3:2181 Topic:mykafka PartitionCount:1 ReplicationFactor:3 Configs: Topic: mykafka Partition: 0 Leader: 133 Replicas: 133,134,132 Isr: 134 // 发送消息(cluster1 上执行) $ kafka-console-producer.sh --broker-list localhost:9092 --topic mykafka // 接收消息(cluster2 上执行) $ kafka-console-consumer.sh -zookeeper cluster1:2181,cluster2:2181,cluster3:2181 --topic mykafka --frombeginning // 在 cluster1 输入以下内容 test mycluster test 可以在 cluster2 上看到相应的信息 按 Ctrl+C 退出 // 关闭 kafka,在每台上执行 $ kafka-server-stop.sh //新建虚拟窗口 kafka,在每台上执行 $ screen -S kafka // 启动 kafka 集群,在每台上执行 $ kafka-server-start.sh /usr/local/kafka_2.10-0.8.2.1/config/server.properties // 退出虚拟窗口 kafka,在每台上执行 $ Ctrl+A+D 在每台服务器上面执行 jps 可以看到 Kafka 进程在运行 // 关闭 kafka 的命令为,在每台服务器上进入虚拟窗口 kafka,然后使用 kafka-server-stop.sh 即可。 3.6.3 可能遇到的问题 1. 如果出现以下信息,则需要下载 slftj-nop-1.5.jar,并将其复制至 kafka 的 libs 目录下: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 2. Error: while executing topic command replication factor: 3 larger than available brokers: 1 19 数据仓库与大数据工程笔记本虚拟机搭建 Hadoop 集群操作文档 这是因为没有将 3 台机器的 kafka 都启动。 3.7 安装 Hadoop 3.7.1 安装 Hadoop 启动的先决条件是 zookeeper 已经成功启动 // 在 cluster1 节点/usr/local/解压 hadoop 安装包 批注 [宋超16]: 2.0 更新 $ su root # tar -zxvf hadoop-2.6.5.tar.gz // 删除安装包 # rm hadoop-2.6.5.tar.gz // 切换到存有 hadoop 配置文件的目录 # cd /usr/local/hadoop-2.6.5/etc/hadoop // 修改 hadoop-env.sh 文件 # vi hadoop-env.sh 将 export JAVA_HOME=${JAVA_HOME}替换为 export JAVA_HOME=/usr/local/jdk1.7.0_80 export HADOOP_PID_DIR=/home/hadoop_files // 配置 mapred-env.sh # vi mapred-env.sh export HADOOP_MAPRED_PID_DIR=/home/hadoop_files // 配置 core-site.xml 文件 # vi core-site.xml