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\bin
HADOOP_HOME
:D:\hadoop\hadoop-2.6.4
Path
(不要跟*天宇一样直接删了再加,在原来的基础上修改,你的系统不应该没有这个环境变量参数(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