big数据
大数据-笔记-1
文章地址:(可能更好的阅读体验)
- https://www.cnblogs.com/rabbit-dayi/p/17822822.html
- https://type.dayiyi.top/index.php/archives/244/
- https://blog.dayi.ink/?p=93
- https://cmd.dayi.ink/-BShZBz_ThuNVoGepjYbsA (本文原始链接,打开速度可能偏慢)
1. 安装

2. 查看三台虚拟机IP

设置静态IP

3. 修改IPV4为manual

IP 地址如下:
1 | gataway : 192.168.83.2 |

3. 关闭防火墙
1 | su |

===

slave1 slave2:


4.关闭防火墙自动运行
1 | chkconfig iptables off |
master:

slave1:

slave2:

5. 配置主机名
1 | #hostname |
输入 i 进入编辑模式
输入 :wq 保存文件
发现已经做了)
master:

slave1:
![]
slave2:

6. IP 地址 HOSTNAME 绑定
1 | vi /etc/hosts |
i : 进入编辑模式
:wq : 保存文件

master:

slave1:

slave2
chk1:
7. 修改windows的host
打开文件
路径打开这个:
C:\Windows\System32\drivers\etc\
C:\Windows\System32\drivers\etc\hosts
先复制到桌面,然后修改完再复制回去(真就同步,我先想出来的pvp写的PVP)


8. 配置远程SSH登录
哦,直接登录

但是不是限制密钥登录..登不进去呀
哦哦,可以直接登录,那没事了

添加三个主机之后

ok)

锟斤拷烫烫烫
问题解决:
chk:
- windows 的hosts文件
C:\Windows\System32\drivers\etc\ - 虚拟机的IP地址是否对应
三个节点窗口:
查看 -> 交互窗口 -> 右键底部的窗口,发送交互到所有标签
因为虚拟机里套虚拟机不好截图,菜单截不下来(

这个分割线没有用
我猜的
输入
ssh-keygen
生成RSA密钥:

复制公钥:

输入到虚拟机里的
.ssh/authorized_keys
9. 时钟同步
9.1 手动时间同步
1 | su root |

显示系统时间

显示系统硬件时间:
(全是锟斤拷)
NTP同步时间
9.2 自动时间同步
下班
2023年9月13日14:09:57
时间同步
1 | timedatectl set-local-rtc 1 |

9.3 配置自动时间同步
两个从节点
1 | crontab -e |
10. 免密登录
1 | #直接输入exit |

10.1 设置SSH免密登录
1 | ssh-keygen -t rsa |

1 | cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys |

我觉得这个公钥有点用:(应该没啥用了)ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6yR468UQBZ/9KSG71FD0UVlv9N0I6q2RfA94yLT7uGhja9vzBJSP9mDg8RF8+Z6p5+katfYE7YLzjtLNMtC5lTjkwW8WHFyCGUP0QEcAIH0ZdDVn3nwHG9k+b2XfpLNKOieWYqUoixRSzIecUd5iq3WDe4dUjgBmGhfouo+FtQob/q8OOg2iJszl86ad8dE9W2BRS3VU5q6/OZmPp8uJcfXAl4/bHJq56+FNPSwk9b+umAsiH+bqeVCkW6JJd/Tw7DGkhYACGxleF5onBtiLKwbMZ+RanWiFm9AZqod86rcmZ9IPYaWf/QXgyun5vrNBBgBT+a8CBsRoBpFk0X7CCw== dayi@dayi-bigdata-master
1 |
|

10.2 测试是否免密登录
1 | ssh dayi-bigdata-slave-1 |

11. 安装JDK(普通用户)
新建文件夹
1 | cd ~ |
复制文件
sftp://dayi-bigdata-master
sftp://dayi-bigdata-slave-1
sftp://dayi-bigdata-slave-2


查看下当前的文件
1 | ls |
解压
1 | tar -zxvf jdk-7u71-linux-x64.gz |
11.1 配置环境变量
1 | # (可选,出错请忽略)按老师目录移动文件 |
11.2 验证JDK安装成功
1 | java -version |

12. 安装hadoop(master 普通用户)
只做主节点。
1 | tar -zxvf hadoop-2.6.4.tar.gz |
编辑bash配置 文件
1 |
|
np++连接
- 打开notepad++

输入配置文件
点这个
然后到这里来:
/home/dayi/resoureces/hadoop/etc/hadoop

修改hadoop-env.sh
hadoop-env.sh 25 行
1 | export JAVA_HOME=~/resources/jdk |

修改 yarn-env.sh
yarn-env.sh
- 23 行
1 | export JAVA_HOME=~/resources/jdk |

修改 core-site.xml
core-site.xml
1 | <configuration> |

新建data文件夹
1 | # 记得自己改 |
修改hdfs-site.xml
1 | <property> |

ctrl+s
修改yarn-site.xml
1 | <configuration> |

修改mapred-site.xml
打开
mapred-site.xml.template新建文件:

- 输入内容
1 |
|

打开slaves
添加
1 | slave1 |

将配置好点hadoop发送到从节点
1 | cd ~ |

13.启动hadoop
- 格式化文件系统(master,普通用户
1 | hadoop namenode -format |


- 启动hadoop
1 | cd ~/resources/hadoop/sbin/ |

- check
1 | jps |





13.1 验证
1 | #启动 |
13.2 修复
1 | ~/resources/hadoop/sbin/./stop-all.sh |
结果:
14 HDFS
先保证你的节点有两个以上哦
- 浏览文件
1 | hadoop fs -ls / |
好像没什么东西

这里好像也可以看:
http://master:50070/explorer.html#/

- 创建目录
1 | # 创建目录 |

主页查看文件
- 上传文件?
本地新建一个文件
也可以直接图形界面去干
1
2
3
4
5
6
7
8cd ~
mkdir b
ls -alh b
cd b
echo ovo>>ovo.txt
# i 输入 esc->:wq 保存
vi test
查看目录和文件:
1
2ls -alh
cat test
将test上传到文件系统
1 | cd ~/b |



- 查看文件内容
1 | hadoop fs -cat /a/test |

- 下载文件
1 | hadoop fs -get /a/test test1 |

- 修改文件权限
1 | hadoop fs -ls /a |


1 | -rw-r--r-- |
增加执行权限:
1 | hadoop fs -chmod u+x /a/test |

组权限+wx
other权限+wx
1 | hadoop fs -chmod o+x /a/test |

去除所有人的执行权限
1 | hadoop fs -chmod a-x /a/test |

数字:
1 | 000 |
权限
1 | hadoop fs -chmod 644 /a/test |

- 删除文件
1 | hadoop fs -rm /a/test |

- 删除目录
1 | hadoop fs -rm -r /a |

15. mysql安装?
- 新建mydb文件
普通用户
1 | mkdir ~/resources/mydb |
- 复制文件,把文件粘贴进去
能直接粘贴到虚拟机就不用这个
这里软件是filezila


如何连接:
- 检查系统里是否有自带的mysql
1 | su |

有一个诶
- 有的话就删除
建议打个快照先
1 | rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps |

- 安装4个文件
common , libs , client, server
1 | #(在普通用户下) |

安装:
1 | rpm -ivh mysql-community-common-5.7.13-1.el6.x86_64.rpm |

- 启动server
1 | service mysqld start |

修改mysql默认密码
1 |
|


1 | mysql -uroot -p"di<aPM7a&p/(" |

修改密码:
用户名:root
密码:wg1%Bigdata
1 | ALTER USER 'root'@'localhost' identified by 'wg1%Bigdata'; |
OK 就可以

mysql中创建用户
用户名: hadoop
密码: hadoop1%Bigdata
1 | Grant all on *.* to 'hadoop'@'%' identified by 'hadoop1%Bigdata'; |

尝试登录
1 | quit; |

MYSQL数据库里创建hive元数据库,叫hive1
查看当前数据库
1 | show databases; |

创建数据库
1 | create database hive1; |

16. 安装hive
1.复制hive文件到resources

2.解压缩
1 | #进入目录 |

3. NPP改配置文件
连接:
打开目录:~/resources/hive/conf
新建文件,右键文件夹hive-site.xml

内容如下:
1 |
|

如果你的主机名不一样记得改这行:jdbc:mysql://master:3306/hive1?characterEncoding=UTF-8
1 | jdbc:mysql://master:3306/hive1?characterEncoding=UTF-8 |
4. 复制驱动
mysql-connector-java-5.1.42-bin.jar -> ~/resources/hive/lib

5.配置bash
配置环境变量
- npp

1 | vim ~/.bash_profile |

然后查看hive版本,如果能查看就说明环境目录成功了
1 | hive --version |

搞得和预言家一样
6. 替换文件
1 | rm ~/resources/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar |

7. 启动hive
1 | #1.下载原神(hadoop) |


原神:


8.启动
1 | ~/resources/hadoop/sbin/./start-all.sh |


CRT 调整:



17.hive应用
1 | hive>quit; |
1. 新建文件
1 | cd ~ |
i 输入 ESC+:wq保存

查看文件
1 | cat stu |

2.启动hive
1 | hive |
命令:
查看数据库
1
show databases;

创建数据库
1
2create database studb;
show databases;
切换数据库
1
use studb;

查看当前数据库里的表
1
show tables;

创建表
\t来区分列1
2
3
4create table if not exists stu
(name string,age int,sex string)
row format delimited fields terminated by '\t';
show tables;
查看文件:
http://master:50070/explorer.html#/user/hive/warehouse/studb.db/

查看表的创建信息等
1
show create table stu;

查看表结构
1
desc stu;

3. 加载数据
在hive下
从文件加载数据
1
load data local inpath '/home/dayi/cc/stu' into table stu;

查询表
1
select * from stu;

删除表
1
drop table stu;

删库跑路
database没有表,为空
1
drop database studb;

有表的情况下
1
drop database studb cascade;
4. 大数据分析-hive应用2
搜狗
1 | ts 搜索时间 |
创建
1 | create database sogoudb; |

使用数据库
1 | use sogoudb; |
创建外部表
1 | create external table if not exists sogou |

查看表
1 | show tables; |

加载数据方式2
把这个500M文件(sogou.500w.utf8)塞到cc目录(~/cc)


查看文件
1 | cd ~/cc |

上传文件
1 | #上传文件(好慢) |

http://dayi-bigdata-master:50070/explorer.html#/s1/sogoudata
进入hive-导入
在hive里
1 | use sogoudb; |
查询记录-前三条
1 | select * from sogou limit 3; |


查询表里总共多少记录
1 | select count(*) from sogou; |


超级慢



193秒:
查询UID总数
1 | select count(distinct(uid)) from sogou; |
还没执行完
177秒
1 | select count(uid) from sogou |

出来了:
统计用户平均查询次数
$平均次数=总次数/用户个数$
建立临时表:
表a
| uid | cnt |
|---|---|
| a | 10 |
| b | 20 |
总次数 = sum(a.cnt)
用户个数 = count(a.uid)
临时表a
1 | select uid,count(*) as cnt |
总表:
1 | select sum(a.cnt)/count(a.uid) from |
开炮:

好慢:
出了
3.6964094557111005
查询频度最高的前10个关键字
1 | SELECT kw, COUNT(kw) AS cnt |

那个URL


好慢hhhh:
出来了:
18. zookeeper
1. 复制压缩包
1 | cd resources |

recources/zookeeper/conf
文件zoo.cfg
1 | # The number of milliseconds of each tick |
server.1 服务器编号
master 服务器名
2888 服务端口
3888 选举端口

3.创
数据节点表示文件myid
位置 dataDir=/tmp/zookeeper
1 | #位置在内存盘里 重启会丢失 |


服务器炸了虚拟机没了(
)
4. 发送zookeeper发送到从节点
1 |
|
5. 传送bash_profile
1 | scp -r ~/.bash_profile slave1:~/ |
6. 启动zookeeper
1 | cd ~/resources/zookeeper/bin/ |



跟上了

验证启动
1 |
|
这样是正常的

炸了

调试(zkServer.sh print-cmd)
1 | "/home/dayi/resources/jdk/bin/java" -Dzookeeper.log.dir="." -Dzookeeper.root.logger="INFO,CONSOLE" -cp "/home/dayi/resources/zookeeper/bin/../build/classes:/home/dayi/resources/zookeeper/bin/../build/lib/*.jar:/home/dayi/resources/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/home/dayi/resources/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/home/dayi/resources/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/home/dayi/resources/zookeeper/bin/../lib/log4j-1.2.16.jar:/home/dayi/resources/zookeeper/bin/../lib/jline-0.9.94.jar:/home/dayi/resources/zookeeper/bin/../zookeeper-3.4.6.jar:/home/dayi/resources/zookeeper/bin/../src/java/lib/*.jar:/home/dayi/resources/zookeeper/bin/../conf:" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain "/home/dayi/resources/zookeeper/bin/../conf/zoo.cfg" |
然后直接复制启动(你的跟我的不一样)
在这里看看报错是什么

出现错误看看这个文件是否正常
1 | /tmp/zookeeper/myid |
19. 安装hbase
1. 复制文件解压缩
1 | cd ~/resources/ |

2. 修改配置文件
文件1
~/resources/hbase/conf/hbase-env.sh
29 行:

获得JAVA_HOME:
echo $JAVA_HOME
124行:

true : 使用habase自带的ZK(你启动失败了zookeeper)
false : 不使用hbase自带的ZK (上节课启动成功)
文件2
~/resources/hbase/conf/hbase-site.xml
1 | <configuration> |

文件3
regionservers

3. 添加环境变量
1 | export HBASE_HOME=~/resources/hbase |

保存后,sources一下
两个从节点:
1 | source ~/.bash_profile |
4. 传送文件
1 | scp -r ~/resources/hbase slave1:~/resources/ |


source一下
1 | #slave1 |
5. 原神启动
hadoop
1 | ~/resources/hadoop/sbin/./start-all.sh |
这种情况重新执行一下就行

zookeeper
1 | #master |
验证:
1 | ~/resources/zookeeper/bin/./zkServer.sh status |

lader or following
hbase
1 | ~/resources/hbase/bin/start-hbase.sh |


20. hbase使用
1. shell
hbase shell

2. CRT



3. 命令1 list

4. 命令2 新建表
1 | create 'stu','info','score' |

4. 命令3 写数据
尽量不要超过三列
1 | put 'stu','1','info:name','John' |

1 | put 'stu','2','info:age',20 |

5. 读数据
两种方式
1 | get 'stu','1' |

scan 读所有行
1 | scan 'stu' |

查看表结构
1 | describe 'stu' |

1 | Table stu is ENABLED |
6. 删除
删单元格
delete 'stu','3','score:Math'

删除失败好像不会报错。
删行
1 | deleteall 'stu','2' |

删表
- 先让表失效
- 删除表
1 | disable 'stu' |

20 MapReduce
肚子疼死了
拉肚子拉的有点自闭,上课没跟上
1. 安装JDK
jdk-8u102-windows-x64.exe
安装目录不要带有中文,可以的话推荐选择C:\Program Files\Java或者D:\Program Files\Java
有闸瓦环境了非1.8版本也建议再装一个。

2. 解压缩hadoop
- 想法子把这个文件
hadoop-2.6.4.tar.gz解压了

- 推荐放到目录:
D:\hadoop\hadoop-2.6.4


- 然后修补下hadoop
需要替换文件直接替换即可。
D:\hadoop\hadoop-2.6.4\bin里面放下:
hadoop-common-2.2.0-bin-master.zip里面的bin目录(替换文件)。hadoop.dll放入D:\hadoop\hadoop-2.6.4\bin(替换)winutils.exe放入D:\hadoop\hadoop-2.6.4\bin(替换)


3. 配置环境变量
这一步就是加4个(3个)环境变量,没那么复杂,但是会根据你电脑的实际情况有所不一样。所以篇幅比较大
如何修改环境变量?
此电脑/这台电脑/计算机(在文件管理器里,防止你桌面的是个快捷方式)->右键 属性-> 找到高级系统设置—>高级->环境变量
按你实际修改目录,用户变量和系统变量都可以。
好像如果JAVA_HOME目录有空格的话会有些问题,
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_102

classpath:.;C:\Program Files\Java\jdk1.8.0_102\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_102\lib\tools.jar;C:\Program Files\Java\jdk1.8.0_102\binHADOOP_HOME:D:\hadoop\hadoop-2.6.4Path(不要跟*天宇一样直接删了再加,在原来的基础上修改,你的系统不应该没有这个环境变量参数(Path),请先找找,这个环境变量是有顺序的,前面的会优先遍历) :- 这种的添加
;C:\Program Files\Java\jdk1.8.0_102\bin\;D:\hadoop\hadoop-2.6.4\bin
- 这种的新建两个条目,移动到最上面去
C:\Program Files\Java\jdk1.8.0_102\bin\D:\hadoop\hadoop-2.6.4\bin
- 这种的添加

- 验证环境变量
1 | java -version |
D:\jdk\jdk1.8.0_102

遇到这个问题:
我也不知道影不影响,原因是:Program Files中存在空格,然后他不能正常用,两个方法:
方法1:把
JAVA_HOME环境变量中的Program Files改为:PROGRA~1,比如这里我改为了:C:\PROGRA~1\Java\jdk1.8.0_102
方法2(推荐):把JDK复制一份到普通目录中(不带空格),然后修改
JAVA_HOME到这里


方法三:虽然我带着的空格,但是跑起来很正常,老师跟我说是这样(求告知)
他这个JAVA_HOME的路径带空格好像会奇奇怪怪的
改成JAVA_HOME = “C:/xxxxx/jre1.8_102”(带引号会这样)
复制了jdk到没空格的目录
把hadoop的env
这样好像可以
感觉不应该呀,带空格就识别不出来感觉不至于有这种低级问题bia
- 也可以尝试修改这个文件的25行
D:\hadoop\hadoop-2.6.4\etc\hadoop\hadoop-env.cmd

总之:
执行:
1 | java -version |
第一行和最后一行的结果应该这样,但是你的如果有点多余的东西,应该也不是很影响?
4. 新建项目
1. 配置Eclipse
感谢王策哥哥
windows->preference->java->install JREs->add->standard VM


2. 新建工程
感谢王策
file->new project->java project->next->name->finish


3. 导包
- ALT+ENTER 打开项目设置
JAVA BUILD PATH-> 添加外部库- 导入hadoop环境jar包
1 | D:\hadoop\hadoop-2.6.4\share\hadoop\common所有jar包 |



5. 新建包
新建org.apache.hadoop.io.nativeio
org.apache.hadoop.io.nativeio


然后把NativeIO.java弄到包里
可以直接拖过来

新建包 my
my

同样的,把文件弄过去
如果需要修改的话这里:

到master下修改下目录权限
master
1 | #启动hadoop |
看看网页:
http://master:50070/dfshealth.html#tab-datanode
正常的话,
设置777权限
1 | hadoop fs -chmod 777 / |

6. 尝试新建目录
运行Test.java

这样就好啦


单词统计

- 21 行 可能需要重新配置
存放数据源
master
1 | mkdir -pv ~/aa |

上传words
- 目录是否正常
1 | hadoop fs -ls / |
- 上传文件
1 | hadoop fs -put ~/aa/words /ww |

运行程序


查看文件:
http://master:50070/explorer.html#/ww/result


21 mapperreduce 代码
读取文件
1 | package my; |

新建目录
上传文件
1 | package my; |
下载文件
1 | hadoop fs -chmod 777 /ww/ff |
1 | package my; |

列表
下发源文件

删除文件
下发文件

结束
OVO

