大数据项目技术文档
文档索引
系统结构
服务名称 | 子服务 | 节点001 | 节点002 | 节点003 |
---|---|---|---|---|
HDFS | NameNode | v | ||
DataNode | v | v | v | |
SecondaryNameNode | v | |||
Yarn | NodeManager | v | v | v |
ResourceManager | v | |||
zookeeper | Zookeeper Server | v | v | v |
Hive | Hive | v | ||
MySQL | MySql | v | ||
Sqoop | Sqoop | v | ||
Hbase | HMaster | v | ||
HRegionServer | v | v | v |
Hadoop搭建
配置Hadoop安装环境
Virtual虚拟机
安装Virtual虚拟机
创建Ubuntu虚拟机:
- master
- node1
- node2
分配内存4G,硬盘60G
用户名:hadoop
密码:123456
配置静态IP
在Virtual虚拟机网络设置中:
添加NAT模式子网IP:10.2.2.0/24
在本机网络适配器中:
设置虚拟网卡VMnet8 IP:10.2.2.1,网关:255.255.255.0,DNS:本机DNS地址
配置Ubuntu虚拟机
安装好Ubuntu系统,设置网络适配器为NAT模式
进入Ubuntu虚拟机,打开网络配置文件:
sudo vim /etc/network/interfaces
添加如下内容(根据Virtual虚拟机中虚拟网络编辑器填写):
auto ens33 #网卡名称,可以通过ifconfig获取
iface ens33 inet static #静态的获取IP地址
# hwaddress ether AA:BB:CC:DD:EE:FF #复制虚拟机后修改MAC地址
address 10.2.2.11 #设置IP地址
gateway 10.2.2.2 #设置网关
netmask 255.255.255.0 #设置子网掩码
打开DNS配置文件:
sudo vim /etc/resolvconf/resolv.conf.d/base
添加如下内容:
nameserver #填写本机DNS
nameserver 114.114.114.114
永久修改hostname:
打开hostname文件
sudo vim /etc/hostname
修改主机名为:hmain001
关闭防火墙:
查看防火墙状态:sudo ufw status
关闭防火墙:sudo ufw disable
配置hadoop用户具有root权限:
sudo su
sudo vim /etc/sudors
root ALL=(ALL:ALL) ALL
hadoop ALL=(ALL:ALL) ALL
重启虚拟机
安装准备
所有安装均在/opt/
目录下进行
cd /opt/
新建文件夹
mkdir module #存储安装框架
mkdir software #存储软件安装包
更改文件拥有者
sudo chown hadoop:hadoop module/ software/
安装JAVA JDK
在Ubuntu虚拟机中安装JAVA JDK
下载 Oracle 版本 Java JDK:jdk-8u144-linux-x64.tar.gz
上传到/opt/software/
目录下
将 jdk-8u144-linux-x64.tar.gz 解压到 /opt/modules 目录下:
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module
添加环境变量:
vim /etc/profile
#JAVA_HOME
export JAVA_HOME="/opt/module/jdk1.8.0_144"
export PATH=$JAVA_HOME/bin:$PATH
执行:source /etc/profile
Hadoop安装
克隆虚拟机
将原有虚拟机克隆两次,分别命名为hmain002和hmain003
修改网络配置:
虚拟机hamin002 IP:10.2.2.12
虚拟机hmain003 IP:10.2.2.13
配置Hostname:
虚拟机hamin002 hostname: hmain002
虚拟机hmain003 hostname: hmain003
配置hosts:
vim /etc/hosts
10.2.2.11 hmain001
10.2.2.13 hmain002
10.2.2.13 hmain003
设置无密码访问
在hmain001上生成公钥
cd .ssh/
ssh-keygen -t rsa
分发公钥
ssh-copy-id hmain001
ssh-copy-id hmain002
ssh-copy-id hmain003
在hmain002、hmain003上生成公钥并分发至三台虚拟机
分发配置
在其他两台虚拟机上创建存放Hadoop目录:
cd /opt/
mkdir module #存储安装框架
mkdir software #存储软件安装包
集群部署规划
hmain001 | hmain002 | hmain003 | |
---|---|---|---|
HDFS | NameNode/DataNode | DataNode | SecondaryNameNode/DataNode |
YARN | NodeManager | ResourceManager/NodeManager | NodeManager |
安装
在hmain001上,解压Hadoop目录:
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
将Hadoop添加到环境变量:
vim /etc/profile
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
执行:source /etc/profile
核心文件配置
配置 core-site.xml:
cd /etc/opt/module/hadoop-2.7.2/hadoop
vim core-site.xml
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<!-- 其中,hdfs 为协议名称,hadoop102 为 NameNode 的节点服务器主机名称,9000 为端口-->
<value>hdfs://hmain001:9000</value>
</property>
<!-- 指定 Hadoop 运行时产生的文件的存储目录,该目录需要单独创建 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
HDFS配置
配置hadoop-env.sh
vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置 hdfs-site.xml
vim hdfs-site.xml
<!-- 指定 HDFS 存储内容的副本个数 -->
<!-- Hadoop 通过使用文件的冗余来确保文件存储的可靠性,由于有 3 个 DataNode,所以我们可以将副本数量设置为 3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--配置 Hadoop 分布式集群的 SecondaryNameNode-->
<!--SecondaryNameNode 主要作为 NameNode 的辅助,端口为 50090 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hmain003:50090</value>
</property>
YARN配置文件
配置yan-env.sh
vim yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置文件 yarn-site.xml
vim yarn-site.xml
<!-- reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hmain002</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
MapReduce配置文件
配置mapred-env.sh
vim mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置 mapred-site.xml
vim mapred-site.xml
<!-- MapReduce 计算框架的资源交给 YARN 来管理 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hmain003:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hmain003:19888</value>
</property>
配置 slaves
vim slaves
hmain001
hmain002
hmain003
分发文件
scp -r /opt/module hadoop@hadoop002:/opt/
scp -r /opt/module hadoop@hadoop003:/opt/
修改环境变量配置文件
使配置文件生效
source /etc/profile
注意:
/etc/profile
文件未分发,需要手动修改
启动集群
格式化NameNode节点
cd /opt/module/hadoop-2.7.2
bin/hdfs namenode -format
hadoop001启动HDFS
sbin/start-dfs.sh
查看进程
jps
hadoop002启动YARN
sbin/start-yarn.sh
查看进程
jps
通过 Web UI 查看集群是否启动成功
检查NameNode和DataNode:
浏览器中输入 http://hmian001:50070
查看 YARN
浏览器输入 http://hmain002:8088
停止Hadoop
在NameNode上:
sbin/stop-dfs.sh
Mysql安装
安装包准备
下载地址:https://downloads.mysql.com/archives/community/
将 MySQL 压缩包 mysql-server_5.6.24-1ubuntu14.10_amd64.deb-bundle.tar 上传至/opt/software 目录下, 并解压。
tar -xvf mysql-server_5.6.24-1ubuntu14.10_amd64.deb-bundle.tar
安装 MySQL 服务器
安装依赖包
sudo apt-get install libaio1
安装commom
sudo dpkg -i mysql-common_5.6.24-1ubuntu14.10_amd64.deb
安装Mysql-server
sudo dpkg -i mysql-community-server_5.6.24-1ubuntu14.10_amd64.deb
注意:安装过程中会设置MySQL密码(password:123456)
sudo dpkg -i mysql-server_5.6.24-1ubuntu14.10_amd64.deb
安装 MySQL 客户端
安装客户端client
sudo dpkg -i mysql-community-client_5.6.24-1ubuntu14.10_amd64.deb
sudo dpkg -i mysql-client_5.6.24-1ubuntu14.10_amd64.deb
登录 MySql
mysql -uroot -p123456
查看MySQL状态
service mysql status
启动数据库
service mysql start
MySQL 中 user 表的主机配置
登录 MySql
mysql -uroot -p123456
显示目前 MySQL 的所有数据库
mysql>show databases;
使用 MySQL 数据库
mysql>use mysql
显示 MySQL 数据库中的所有表
mysql>show tables;
user 表中存储了允许登录 MySQL 的用户、 密码等信息, 展示 user 表的结构, 可以发现 user 表的字段非常多
mysql>desc user
查询 user 表中的部分字段 host、 user、 password, 显示关键信息, 可以看到 4 条信息, host 分别是 localhost、 hadoop102、 127.0.0.1、 ::1, 这 4 个 host 都表明只有本机可以连接 MySQL
mysql>select user, host, password from user;
修改 user 表, 把 host 字段值修改为%, 使任何 host 都可以通过 root 用户+密码连接MySQL
mysql>update user set host='%' where host='localhost';
需要删除 root 用户的其他 host, 才能使 “%” 生效
mysql>delete from user where Host='hadoop001';
mysql>delete from user where Host='127.0.0.1';
mysql>delete from user where Host='::1';
刷新权限, 使修改生效
mysql>flush privileges;
退出
mysql> quit
Hive安装
安装及配置 Hive
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
把 Hive 的安装包 apache-hive-2.3.8-bin.tar.gz 上传到 Linux 的/opt/software 目录下
解压 apache-hive-2.3.8-bin.tar.gz 到/opt/module/目录下
tar -zxvf apache-hive-2.3.8-bin.tar.gz -C /opt/module/
修改 apache-hive-2.3.8-bin 的名称为 hive
mv apache-hive-1.2.1-bin/ hive-2.3.8
修改/etc/profile 文件, 添加环境变量
sudo vim /etc/profile
添加以下内容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive-2.3.8
export PATH=$PATH:$HIVE_HOME/bin
执行以下命令使环境变量生效
source /etc/profile
配置hive-env.sh
在/opt/module/hive-2.3.8/conf/目录下,修改hive-env.sh.template名称为hive-env.sh
mv /opt/module/hive-2.3.8/conf/hive-env.sh.template /opt/module/hive-2.3.8/conf/hive-env.sh
配置hive-env.sh文件:
vim hive-env.sh
配置:
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export HIVE_CONF_DIR=/opt/module/hive-2.3.8/conf
驱动复制
复制 /opt/software/mysql-libs/mysql-connector-java-5.1.27 目录下的
mysql-connector-java-5.1.27-bin.jar 到/opt/module/hive/lib/目录下, 用于稍后启动 Hive 时连接MySQL
cp /opt/software/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /opt/module/hive-2.3.8/lib/
配置 Metastore 到 MySQL
在/opt/module/hive/conf 目录下创建一个 hive-site.xml 文件
vim hive-site.xml
根据官方文档配置参数, 复制数据到 hive-site.xml 文件中
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--配置 Hive 保存元数据信息所需的 MySQL URL 地址,此处使用 Keepalived 服务对外提供的虚拟
IP 地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop001:3306/metastore?createDatabaseIfNotExist=true
</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--配置 Hive 连接 MySQL 的驱动全类名-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--配置 Hive 连接 MySQL 的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!--配置 Hive 连接 MySQL 的密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
<!--数据仓库位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--hive的安装节点-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop001:9083</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
初始化元数据库
启动 MySQL
mysql -uroot -p#密码
新建 Hive 元数据库
mysql> create database metastore
mysql> quit
初始化 Hive 元数据库
schematool -initSchema -dbType mysql -verbose
启动 Hive
Hive 2.x 以上版本, 要先启动 Metastore 和 Hiveserver2 服务, 否则会报错。
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
在/opt/module/hive-2.3.8 目录下启动Metastore
nohup bin/ hive --server metastore &
启动 Hive
bin/hive
Sqoop安装
下载并解压
下载上传安装包 sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz 到虚拟机中。
解压 Sqoop 安装包到指定目录。
tar -zxf sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz -C /opt/module/
修改文件名
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6
修改配置文件
重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh
修改配置文件 sqoop-env.sh
vim sqoop-env.sh
增加如下内容
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
复制 JDBC 驱动
复制 JDBC 驱动到 Sqoop 的 lib 目录下
cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.6/lib/
验证 Sqoop
我们可以通过如下命令来验证 Sqoop 配置是否正确
bin/sqoop help
出现 Warning 警告(警告信息已省略), 并伴随着帮助命令的输出
Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
import-mainframe Import datasets from a mainframe server to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information
测试 Sqoop 是否能够成功连接数据库
bin/sqoop list-databases --connect jdbc:mysql://hadoop001:3306/ --username root --password 123456
出现如下输出则表示连接成功
information_schema
mysql
performance_schema
Hbase
Hbase安装
把 Hbase 的安装包上传到 Linux 的/opt/software 目录下
解压 hbase-1.3.1-bin.tar.gz 到/opt/module/目录下
tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/module/
在/opt/module/hbase-1.3.1/conf/目录下,修改hbase-env.sh
vim hbase-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
export HBASE_MANAGES_ZK=true
修改hbase-site.xml
vim hbase-site.xml
<!—hbase.root.dir 指定HBase数据在HDFS上的存储路径-->
<property>
<name>hbase.root.dir</name>
<value>hdfs://hadoop001:9000/hbase</value>
</property>
<!—-指定hbase的运行模式,true代表全分布模式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<--指定hbase的hmaster的主机名和端口-->
<property>
<name>hbase.master</name>
<value>hadoop001:60000</value>
</property>
<!—-指定使用zookeeper的主机地址,必须是奇数个-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop001,hadoop002,hadoop003</value>
</property>
<!—-zookeeper的属性数据存储目录-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zoodata</value>
</property>
配置egionservers文件
hadoop001
hadoop002
hadoop003
分发hbase到其他节点
scp -r /opt/module/hbase-1.3.1 hadoop@hadoop002:/opt/module
scp -r /opt/module/hbase-1.3.1 hadoop@hadoop003:/opt/module
配置环境变量
sudo vim /etc/profile
添加hbase的环境变量
#HABSE_HOME
export HBASE_HOME=/opt/module/hbase-1.3.1
export PATH=$PATH:$HBASE_HOME/bin
激活配置
source /etc/profile
启动hadoop
start-all.sh
主节点启动hbase
start-hbase.sh
显示操作的窗口界面
hbase shell