常规软件指的是JAVAEE, MYSQL, SSM等这些技术 MYSQL只能存储500-1000W条数据, 再多的话检索效率特别慢. 大数据可以存储并处理亿级以上的数据
谈谈对大数据的理解, 海量数据的存储和海量数据的分析计算,简称存数据和检索数据
学习时使用Apache版本, 但是公司一般使用Cloudera版本 也成为CDH版本. Apache版本对各个软件的版本兼容性需要自己核对并使用兼容版本. CDH版本是收费的, 但是Hadoop, Hbase, 等等软件都是统一的版本
高可靠性: Hadoop内部维护了3个副本
高扩展性: 可以支持不宕机的动态扩展和下线
Hadoop1.X和Hadoop2.X的区别
MapReduce在1.x版本当中需要进行计算以及资源调度(分配CPU,内存等), 2.x版本中新增了YARN来做资源调度
该案例的作用是, 统计input文件夹下我们的配置文件中, 满足我们输入的正则表达式的字符串的个数和字符串
第一步 在hadoop文件夹下创建一个input文件夹, 这是因为每一个hadoop都需要一个输入文件夹一个输出文件夹,目前我们创建了输入文件夹
第二步 把当前文件夹下的etc/hadoop/*.xml 拷贝到input下
第三步 执行share目录下的example程序, 指定要跑的程序是grep. 并指定一个输入input 一个输出output 文件夹 最后是一个正则… 这个output文件夹执行这个命令之前必须没有被创建, 否则会报异常
第四步 查看输出结果_SUCESS的大小是0, 它的意义就是告知我们本次执行成功或失败
查看part-r-00000
可以看到满足我们之前设置的正则的字符串输出到了该文件中
编辑wc.input文件是做数据的步骤, 要统计的world的个数就在这里面
执行程序时, 指定程序时wordcount 并指定输入输出文件夹
使用分布式配置的时候, 必须指定hadoop-env.sh中的JAVA_HOME否则其他节点无法调用本节点.
见到env文件就要想着进去修改JAVA_HOME
配置完fs.defaultFS后, 本地运行模式就不能启动了, 这是因为本地运行模式的这个配置默认值是file:///, 这是用的file协议直接找的本地. 而伪分布式和完全分布式都用的是hdfs协议.
修改hadoop.tmp.dir, 如果不修改的话, 默认值是/tmp/hadoop-${user.name}路径下
注意如果用一台服务器搭建伪分布式的话, 需要把fs.defaultFS的值换成hdfs://localhost:9000, 要不然连接不上
默认值是3, 每个数据有3个副本. 我们使用伪分布式时,本身就是一台机器, 如果这里配置成3的话, 其实在本机也只保存一份文件, 3的意思是等到连接上集群了, 再别的节点上新增副本, 最多3份数据
如果是第二次格式化, 需要先删除data下的tmp临时文件与所有日志, 要不然都会格式化失败
如果我们配置了临时文件路径, 那就在配置的路径中, 日志文件在hadoop的路径的logs目录下
第二次格式化NameNode的步骤:
先停止NameNode和DataNode
删除data目录和logs目录
格式化NameNode再重新启动
如果是第二次格式化, 需要先删除data下的tmp临时文件与所有日志, 要不然都会格式化失败
如果我们配置了临时文件路径, 那就在配置的路径中, 日志文件在hadoop的路径的logs目录下
第二次格式化NameNode的步骤:
先停止NameNode和DataNode
删除data目录和logs目录
格式化NameNode再重新启动
运行mapreduce程序时, 直接写路径, 因为配置了文件存储在hdfs中, 就会去hdfs中找到文件, 同样, 输出也要输出到hdfs中
yarn目前最重要的两个组件NodeManager(单个节点的老大)与ResourceManager(所有节点的老大)
nodemanager 设置为MR的shuffle(洗牌模式)
mapreduce.framework.name默认是local本地, 我们把它改成yarn
8088端口yarn的web端, 查看mapreduce运行的程序, 查看mapreduce的进程
点击history查看历史记录会报错, 因为我们还没有启动历史服务进程
在历史记录服务中点击logs, 能查看运行该MR job的所有日志信息
结束每个进程后都用jps命令查看一下是否真正关闭掉了
关闭历史服务
sbin/mr-jobhistory-daemon.sh stop historyserver
关闭nodemanager
sbin/yarn-daemon.sh stop nodemanager
关闭resourcemanager
sbin/yarn-daemon.sh stop resourcemanager
与3.1一样, 一共配置4台hadoop001~hadoop004
HDFS的NameNode和SecondaryNameNode要求不在一台节点上, 因为NameNode和SecondaryNameNode都是很耗费内存的
YARN的ResourceManager也是很耗费内存的, 所以它要避开HDFS的NameNode和SecondayNameNode
需要先删除每台节点上的data和logs文件夹.
注意: 先格式化NameNode后hadoop namenode -format
我们没有配置ssh, 所以只能单独启动, 配置完ssh后就可以用一个命令启动集群了
下面是单独启动的命令. 先不用!
.ssh目录在/home/${user}/.ssh目录
本身在102, 但是还是要执行ssh-copy-id hadoop102一遍. 其实在我们本机, 使用ssh hadoop102 也是需要输入密码的
目前我们配置了atguigu账号在其他节点上的免密登录. 还需要配置root用户在其他节点上的免密登录
切换到root用户su root
在/root/.ssh目录下执行上述命令, 生成公钥私钥并发送到包括本机的三个节点上
启动hdfs集群
启动yarn集群, 需要去指定的resourcemanager节点上去启动, 去其他节点上启动会报错
需要准备一个64位的CentOS, 编译源码可以使Hadoop变成64位的程序, 并且还可以自定义的加入一些功能