整体框架
前期准备
安装vmware
安装xshell
配置ip地址
查看自己的IP地址区间,子网掩码,网关然后进行如下配置
编辑文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33
加入以下信息
GATEWAY=
IPADDR=
MASK
DNS1=8.8.8.8
DNS2=4.4.4.4
创建hadoop用户
useradd -md /home/hadoop hadoop
设置hadoop的密码
exit到root用户
设置密码:passwd hadoop
输入:hadoop两次
拷贝到其他节点(前提配置好了),以做到免密登录
ssh-copy-id CC1
测试是否能登录:
ssh CC1
注意这里登录成功后都是在对CC1进行操作,如果要对本机进行操作需要exit
切换到haddop用户
su -l hadoop
hadoop集群搭建
1、初始工作
修改计算机名
vi /etc/hostname
配置主机地址映射
在CC3(主节点中)
以root形态编辑
vi /etc/hosts
在其后追加如下信息
ip地址 主机名
ip地址 主机名
防火墙
systemctl status firewalld
像这样绿色的active就执行下面的,
systemctl stop firewalld
systemctl disable firewalld.service
关闭另一个东西:
查看状态,如果不是disable执行下面
getenforce
执行
setenforce 0
一劳永逸:
vi /etc/sysconfig/selinux
改变
ssh免密工作——单方面验证
打通自己到自己以及其他主机的映射,而不需要其他主机到自己的映射
在NN上执行以下操作
切换到hadoop用户:su -l hadoop
生成:ssh-keygen
,四下回车
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
查看:ls .ssh/
2、服务器基础环境准备
集群时间同步
yum -y install ntpdate
ntpdate ntp4.aliyun.com
jdk安装配置
传到 /install/tar里面
mkdir -p /install/tar && cd /install/tar
rz -y
tar包:
解压到之前创建的software目录,默认解压到当前目录
tar -zxvf jdk-8u271-linux-x64.tar.gz -C /software/
进入到目录
cd /software
查看解压文件
ls -al
配置jdk环境
vi /etc/profile
在最后追加下面几句
JAVA_HOME=/software/jdk1.8.0_271
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib
export PATH JAVA_HOME
执行刷新(也许)
source /etc/profile
查看java版本
java -version
检查:java -version
3、上传,解压安装包
创建统一工作目录
mkdir -p /export/server/ #软件安装路径
mkdir -p /export/data/ #数据存储路径
mkdir -p /export/software/ #安装包存放目录
上传,解压安装包
- 下载hadoop的tar包
- 上传到主节点:
rz -y
,选择tar包 - 双击cc3再打开一个cc3的会话
- 解压到software文件夹
tar -zxvf hadoop-3.2.2.tar.gz -C /software/
- 等很久很久以后。。。
- 进行环境配置
vi /etc/profile
在文件内进行一下配置
刷新改文件
5、编辑hadoop文件
进入到:cd /software/hadoop-3.2.2/etc/hadoop/
hadoop-env.sh中配置javahome
用:ser nu
显示行号,后面的都会提示行号
在最后加入以下信息
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
在core-site.xml中修改
添加下列
<property>
<name>fs.defaultFS</name>
<value>hdfs://CC2:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/software/hadoop-3.2.2/work</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
hdfs-site.xml配置
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>CC1:9868</value>
</property>
下面的数字是子节点个数
mapred-site.xml文件
分布式计算的布置,框架名称yarn
<property>
<name>mapreduce.framework.name</name>
<value>yarn</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>
yarn-site.xml文件
配置分布式计算的运行时框架
<property>
<name>yarn.resourcemanager.hostname</name>
<value>CC2</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2</value>
</property>
workers-工人们
里面放上所有主机名就行
我这里只有CC1一个主机
CC1
CC2
6、分发安装包
-r表示递归
将master机器上hadoop的安装目录拷到各个节点
- 将hadoop同步到子节点:
scp -r hadoop-3.2.2 CC2:/software/
- 切回root用户
exit
- 将profile文件同步到子节点:
scp /etc/profile CC1:/etc/
做一个覆盖操作 - 对每一个节点执行5
检查是否同步成功hadoop version
,如果有版本号则拷贝成功
7、修改hadoop环境变量
- NN上配置
vim /etc/profile
HADOOP_HOME=/software/hadoop-3.2.2
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export PATH JAVA_HOME HADOOP_HOME
- 同步到其他机器
scp /etc/profile 主机名:/etc/
- 重新加载:
source /etc/profile
8、format操作
- 首次启动必须进行format操作
- 本质上是初始化工作
hdfs namenode -format
导入rpm
mkdir -p /install/software
chmod 777 /install/software
装gcc
yum install gcc
用rz导入
rz -y
安装rpm工具
rpm -ivh --nodeps --force 'ls'
初识dfs
格式化分布式文件系统
只在主节点上执行
文件会被分成多个块,分布于其他节点
改变software的宿主
chown -R hadoop:hadoop hadoop-3.2.2
先切换到hadoop用户
su -l hadoop
改变工作目录:cd /software/hadoop-3.2.2
初始化:hdfs namenode -format
echo $?
查看是否执行正确,如果为0则正确,非0就是错误
ls查看是否新增了work目录,(work很重要的一个东西)
启动hadoop集群:start-dfs.sh
向所有子节点发送jps查看当前进程,jdk提供的,
关闭项目集群:stop-dfs.sh
查看是否搭建成功:hdfs dfs -ls /
创建新的文件夹 hdfs dfs -mkdir test
分布式存储
基础命令
启动:start-dfs.sh
ls: hdfs dfs -ls /
查看根目录下的东西
上传:hdfs dfs -put 本地文件 分布式路径
查看:hdfs dfs -cat 本地文件 /test/
下载:hdfs dfs -get 分布式目录 本地目录
mkdir :hdfs dfs -mkdir 分布文件路径
重命名:hdfs dfs -mv 分布路径 分布路径
查看:hdfs dfsadmin -report
分布式计算
启动:start-yarn.sh
先确认自己的防火墙关了
http://主节点ip:9870/
启动顺序:
start-dfs.sh
start-yarn.sh
关闭顺序:
stop-yarn.sh
stop-dfs.sh
用分布式存储放置数据
mkdir /install/data && cd /install/data
rz -y
上传emp.log文件到data里
创建:hdfs dfs -mkdir -p /src/input
上传:hdfs dfs -put emp.log /src/input
查看:hdfs dfs -ls /src/input/emp.log
代码区
所使用的环境:eclipse,maven
配置maven
编写以下代码
打包成jar包
- 删除targer里面的所有内容(如果有)
- 右键porm.xml
- 点击Debug As => Maven Build
##上传到服务器
上传:rz -y
查看:ls
在分布式集群上运行jar包
对全部节点:su -l hadoop
主机上启动集群:start-dfs.sh
运行jar包:hadoop jar EmpBigData.jar com.zlt.bigdata.SalaryDriver /src/input /src/output
map100%就是成功
查看运行情况:ip地址:8088
查看统计结果:
hdfs dfs -ls /src/output
hdfs dfs -cat /src/output/part-r-00000
,不一定是这个文件夹,可以一个一个看试试
数据的抽取与存储
数据抽取
在hdfs下执行编写的jar包
数据存储
安装配置mysql
向主节点上传 mysql8.0.1.zip
文件
解压:unzip mysql-8.0.22 -d /software/
初始化:
- 切换到tools下面:cd tools
- 执行初始化:
chmod +x ./InitMysql
- echo $?看返回值是不是0
查看服务是否启动:lsof -itcp:3306
启动服务:/software/mysql-8.0.22/sbin/MysqlTools start
切换到mysql的bin目录下执行mysql命令
-P:端口号
-u:用户名
-p:密码
-e"some sql in here…":非交互式命令
./mysql -h127.0.0.1 -P3306 -uroot -p123456
进入交互式
注意分号
查看有哪些数据库:show databases;
创建数据库:create database emp character set utf8;
创建表:./mysql -h127.0.0.1 -P3306 -uroot -p123456 -e"create table if not exists emp.salary(deptName varchar(50) not null,avgSalary int(6) not null)engine=myisam charset=utf8);"
查看创建情况:
- 选择数据库:use emp;
- 查看表:show tables;
将错误信息放到null:语句后假如>/dev/null
,这里没有分号,如果是非交互式
安装配置sqoop——将dfs文件转到mysql
环境配置(无)
重要——转移命令
sqoop-export --export-dir '/data/output' --fields-terminated-by '\t' --lines-terminated-by '\n' --connect 'jdbc:mysql://192.168.162.123:3306/emp' --username 'root' --password '123456' --table 'salary' --columns "deptName,avgSalary"
进入到mysql查看
报表系统
linux机器上安装metabase
转到zip文件夹:cd /install/zip
上传metebase文件:rz -y
解压到software:unzip metabase0.37.2.zip -d /software/
到software查看:cd /software && ls
运行:cd /software/metabase0.37.2/bin && ./Startup.sh
如果不能执行:chmod a+x 文件名
查看:到本地浏览器输入以下地址:主机ip:3000
登录注册
随便填,不过要记住之后要登录
在metabase中使用mysql
在linux上启动mysql服务