如何用hadoop实现k-means

如何用hadoop实现k-means,第1张

(1)、获取文件的总行数: wc data.txt 。可以得到文件的行数是 :10

(2)、因为我要分为三类,所以10/3=3,那么我取的行数就是1,3,6(这个行数可以自己选择,比如也可以直接去前三行 head -n 3 data.txt >centers.txt),然后使用如下命令:awk 'NR==1||NR==3||NR==6' data.txt >centers.txt,然后再把centers.txt上传到HDFS上就可以了。

(下面我使用的是前三行作为数据中心文件)

下面的程序中就不用设置要分 的类别和数据文件的维度数了,我在写这篇和前篇文章的时候参考了这篇文章:http://www.cnblogs.com/zhangchaoyang/articles/2634365.html,这篇里面要在代码中自己设置要分的类别以及数据文件的维度数。

下面是map-combine-reduce *** 作:

map: map的setup()函数主要是读取中心文件把文件的中心点读入一个double[][]中,然后是map。数据转换为:

Text(包含数据的字符串)--》[index,DataPro(Text(包含数据文件的字符串),IntWritable(1))]

combine:

[index,DataPro(Text(包含数据文件的字符串),IntWritable(1))]-->[index,DataPro(Text(包含数据文件相同index的相加的结果的字符串),IntWritable(sum(1)))]

reduce: reduce的setup()函数主要是读取数据中心文件,然后取出其中的数据维度信息(在reduce *** 作中需要数组赋值需要知道数据维度),

[index,DataPro(Text(包含数据文件相同index的相加的结果的字符串),IntWritable(sum(1)))]--》[index,DataPro(Text(包含数据文件相同index的相加的结果的字符串),IntWritable(sum(1)))]--》[index,Text(相同index的数据相加的平均值)]

上面的是循环的过程,最后一个job任务是输出分类的结果。

1、pwd:显示当前路径

cd :切换目录

用法:cd

cd ../ 切换到上级目录

cd / 切换到根目录

cd ~ (或只有cd )切换到当前用户主目录(home底下以用户名命名的文件夹) /root目录mkdir 创建目录

mkdir 目录名 -p 递归创建目录

2、rmdir 删除空目录

用法:rmdir 目录名

也可用:rm -rf 目录名

3、ls 查看目录或文件信息

主要选项:

-l 列出目录或者文件的详细信息。比如权限、修改时间等等

-a 列出当前目录下所有文件,包括隐藏文件(已点开头的都是隐藏文件)

4、vi 文本编辑器

键入i 进入编辑状态

退出编辑按ESC键

不保存退出: :q!

保存退出: :wq

输入/,进入搜索

输入:set nu,显示每一行的行数

按键盘G,可以直接定位到最末尾

5、cp 复制

用法:cp [选项]文件名或目录 目标地址

-R 拷贝目录及目录下所有目录和文件

cp a.txt b.txt 将a文件复制,且另命名为b文件(目录名)

6、mv 移动

用法:mv 文件名或目录 目标目录

mv a.txt ../ 将a文件移动到上级目录(将一个文件移动到另一个目录没有重命名)

mv a.txt ../b.txt 将a文件移动到上一级并改名为b文件(将一个文件移动到另一个目录并重命名)

HDFS 上每个数据节点最多能存多少,多大的数据

HDFS 每数据节点能存储少数据取决于节点硬盘校 于单节点说其存储容量磁盘容量减hdfs-site.xml配置文件dfs.datanode.du.reserved参数值 于集群说取决于集群所DataNode节点硬盘

-

hadoop的datanode上存储多少数据就是由该datanode的磁盘空间决定的,配置文件中dfs.data.dir参数指定了hdfs数据存放目录(多个目录由逗号分隔),设置好该参数后,这个datanode节点的最大存储空间就由设定目录的空间决定。hadoop各个datanode节点的数据量基本是一致的,可以通过balancer.sh来平衡各个节点的空间利用率。

HDFS 上每个数据节点最多能存储多少数据取决于节点的硬盘大小。

对于单个节点来说,其存储的容量为磁盘容量减去hdfs-site.xml配置文件中dfs.datanode.du.reserved参数值。

对于集群来说,取决于集群中所有DataNode节点的硬盘大小之和。但是需要注意考虑集群的备份数量,假设备份数量为3,集群总容量为3TB,则实际可以存储1TB的文件。

1.相同Hadoop版本同步数据

hadoop distcp -skipcrheck -update -m 20 hdfs:dchadoop002.dx:8020/user/dc/warehouse/test /user/dc/warehouse/test

2.不同hadoop版本同步数据

hadoop distcp -skipcrheck -update -m 20 hftp:ns1/user/test /user/dc/test

参数:

-m 表示并发数

-skipcrheck 跳过hdfs校验

-update 更新文件

-

solr每个数据节点最多能存多少,多大的数据

单个数据节点并无数据量的限制,整个集群能存多少数据取决于名称节点的内存有多大,所存储的单个文件的大小取决于整个集群所有数据节点的存储容量之和有多大

SQLite最多能存多大的数据量

您好,我来为您解答:

sqlite本身最大支持2TB的数据量。

希望我的回答对你有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11736571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存