如果想要构造某种格式的大量数据,可以自己写一个代码循环进行迭代即可,在循环内部按照一定格式组装数据,最后通过输出日志或者直接写文件的方式就可以得到对应的大量数据了。
课程中需要用到的软件安装包、以及相关代码都在网盘中了:
链接:https://pan.baidu.com/s/1LaTqzY5NR9pv5-Xg5sWWOA
提取码:1234
json数据的资料、sqoop相关的资料已经上传到这个网盘链接中了
链接:https://pan.baidu.com/s/1AhKOkvsob_ugADZaQc6RlQ
提取码:dy6j
这个课程中的问题无法实时推送给我这个账号,所以回复的比较晚,一般我会隔几天来看一下大家提的问题,最近比较忙,中间耽搁的时间就长了一些,抱歉
Hadoop里面其实包含了HDFS集群和YARN集群。
根据你的意思来看应该是说的HDFS的主节点NameNode把,如果NameNode节点对应的内存满了,可以考虑使用federation联邦机制(需要用到多个NameNode节点),这样可以提高NameNode节点的存储能力。
此时每个NameNode负责维护一个命名空间,命名空间简单理解就是一个HDFS目录,这个HDFS目录下文件的元数据信息就存储在对应的这个NameNode内存中。其他的NameNode负责维护其他的命名空间,这样整个HDFS集群的存储能力就提高了。
看起来像是没有格式化成功。
最直接的定位方法是查看/data/hadoop_repo目录下的日志文件,进程没有成功启动的话在对应的日志文件中会有报错信息
sqoop底层会生成mapreduce任务,所以在控制台看不到错误的具体信息,需要到YARN界面中查看任务的具体报错信息。
根据你这个业务来分析的话,是从hdfs中将数据导出到mysql中,大概率是由于hdfs中数据的mysql中表的字段个数、或者字段类型不匹配导致的问题,想要定位到具体问题,还是要到YARN上查看这个任务的具体错误日志才能真正定位
不好意思,刚看到,解决了就好,这种情况基本上都是集群配置层面的问题
核心错误日志是这一句:
Caused by: java.net.UnknownHostException: hadoop100
表示不认识hadoop100这个主机名,需要配置hostname以及/etc/hosts
重启机器就好了
客户端机器的配置和集群机器的配置保持完全一样即可,唯一的区别是,客户端节点上不需要启动任何进程。
其实最简单的做法就是把集群中修改好配置的hadoop安装包直接拷贝到客户端节点即可
需要使用 WordCount-1.0-SNAPSHOT-jar-with-dependencies.jar包
应该是防火墙没关导致的
9870端口无法打开
https://blog.csdn.net/weixin_45094136/article/details/115349017
另外要查看防火墙是否真的关闭了
我安装的时候9870,8088这2个端口都打不开就是这2个问题造成的
课程代码在这
链接:https://pan.baidu.com/s/1JJ5AHDOd3gIXJmo6g08Btg
提取码:ghbt
空格和制表符直接看起来不好区分,在videoinfowritable的tostring方法中使用的制表符
你要是想验证的话,可以把tostring方法中的制表符改为逗号,再跑一下代码就会发现结果中是用逗号分割的了
mapreduce代码默认不支持直接在本地调试
你到8088界面中查看了吗,能不能看到任务信息
很奇怪,没有任何输出信息
你这样执行一下试试,使用hadoop内置的wordcount案例
hadoop jar hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar wordcount /input /output
你可以加一下慕课的大数据学习qun 938632081 方便沟通
核心日志在这
File /README.txt._COPYING_ could only be written to 0 of the 1 minReplication nodes. There are 0 datanode(s) running and 0 node(s) are excluded in this operatio
意思是说从节点没有启动成功,现在没有正常的datanode
禁用selinux:
编辑 /etc/selinux/config文件,设置“SELINUX=disabled”
客户端通过命令比如hdfs,访问、提交相关任务到集群
使用这个国内源下载会快
一样的效果,你在/etc/profile里面设置也是可以的
/etc/profile里面是设置的全局的环境变量,在执行那4个脚本的时候就可以识别到那些配置了
是一样的,
hadoop fs这种用法是在hadoop1.x的时候提供的
在hadoop2.x的时候提供了新的用法,hdfs dfs,同时也兼容了hadoop1.x中的写法,所以两个效果是一样的。
针对你提的这个疑问:
【如果集群规模比较大时,要在每一个节点上面启动 jobhistorysever岂不是很麻烦?】
在生产环境下搭建大数据集群的时候,建议使用CDH或者HDP进行搭建,方便运维管理,主需要通过页面操作就可以实现hadoop集群的搭建,这些进程也都会自动启动,不需要单独手工操作。
针对你说的这种场景,会出现这种结果:
有2个节点读取本地节点中的数据进行本地计算,另外2个节点上没有数据的,则会跨节点拉取数据进行计算。
默认情况下会优先读取本节点的数据,这是最优的策略,如果由于各种原因无法满足这种策略,会退而求其次,进行跨节点数据传输
看下你代码的第32行,错误信息提示的是数组角标越界了
代码已上传至网盘?
链接:https://pan.baidu.com/s/1JJ5AHDOd3gIXJmo6g08Btg
提取码:ghbt