标签: hadoop-partitioning

如何将硬盘添加到hadoop

我在Ubuntu 14.04上安装了Hadoop 2.4,现在我正在尝试将内部sata HD添加到现有集群中.

我已将新的hd安装在/ mnt/hadoop中,并将其所有权分配给hadoop用户

然后我尝试将其添加到配置文件中,如下所示:

<configuration>
   <property>
       <name>dfs.replication</name>
       <value>2</value>
   </property>

   <property>
       <name>dfs.name.dir</name>
       <value>file:///home/hadoop/hadoopdata/hdfs/namenode, file:///mnt/hadoop/hadoopdata/hdfs/namenode</value>
   </property>

   <property>
       <name>dfs.data.dir</name>
       <value>file:///home/hadoop/hadoopdata/hdfs/datanode, file:///mnt/hadoop/hadoopdata/hdfs/datanode</value>
   </property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

之后,我开始了hdfs:

Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-hadoop-Datastore.out
localhost: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-hadoop-Datastore.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-secondarynamenode-hadoop-Datastore.out
Run Code Online (Sandbox Code Playgroud)

似乎它没有启动第二个高清

这是我的core-site.xml

<configuration>
   <property>
       <name>fs.default.name</name>
       <value>hdfs://localhost:9000</value>
   </property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

此外,我试图刷新namenode,我得到一个连接问题:

Refreshing namenode [localhost:9000]
refreshNodes: Call From hadoop-Datastore/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused …
Run Code Online (Sandbox Code Playgroud)

hadoop hadoop-partitioning hadoop2

4
推荐指数
1
解决办法
4937
查看次数

fs.rename(新路径(rawFileName),新路径(processFileName))不起作用

我正在研究基于 Scala 的 Apache Spark 实现,用于将数据从远程位置加载到 HDFS,然后将数据从 HDFS 摄取到 Hive 表。

使用我的第一个 Spark 作业,我已将数据/文件加载到 HDFS 中的某个位置 -

hdfs://sandbox.hortonworks.com:8020/data/analytics/raw/ 文件夹

让我们考虑一下,在加入 CT_Click_Basic.csv 和 CT_Click_Basic1.csv.gz 文件后,我在 HDFS 中有以下文件 [共享位置的文件名将是此处的文件夹名称,其内容将出现在部分 xxxxx 文件中]:

[root@sandbox ~]# hdfs dfs -ls /data/analytics/raw/*/ 找到 3 项

-rw-r--r-- 3 chauhan.bhupesh hdfs 0 2017-07-27 15:02 /data/analytics/raw/CT_Click_Basic.csv/_SUCCESS

-rw-r--r-- 3 chauhan.bhupesh hdfs 8383 2017-07-27 15:02 /data/analytics/raw/CT_Click_Basic.csv/part-00000

-rw-r--r-- 3 chauhan.bhupesh hdfs 8395 2017-07-27 15:02 /data/analytics/raw/CT_Click_Basic.csv/part-00001

找到 2 件商品

-rw-r--r-- 3 chauhan.bhupesh hdfs 0 2017-07-27 15:02 /data/analytics/raw/CT_Click_Basic1.csv.gz/_SUCCESS

-rw-r--r-- 3 chauhan.bhupesh hdfs 16588 2017-07-27 15:02 …

hadoop hadoop-partitioning apache-spark hadoop2 apache-spark-sql

4
推荐指数
1
解决办法
5102
查看次数

了解hadoop中的自定义分区程序

我现在正在学习分区概念.任何人都可以解释下面的代码.我很难理解

public class TaggedJoiningPartitioner extends Partitioner<TaggedKey,Text> {

    @Override
    public int getPartition(TaggedKey taggedKey, Text text, int numPartitions) {
        return taggedKey.getJoinKey().hashCode() % numPartitions;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个taggedKey.getJoinKey().hashCode()%numPartitions如何确定要为密钥执行哪个reducer?

任何人都能解释一下这个吗?

hadoop mapreduce reducers mapper hadoop-partitioning

2
推荐指数
1
解决办法
6415
查看次数

TotalOrderPartitioner和Partition文件

我正在学习hadoop mapreduce,我正在使用Java API.我了解到TotalOrderPartitioner用于通过密钥在整个集群中"全局"排序输出,并且需要一个分区文件(使用InputSampler生成):

job.setPartitionerClass(TotalOrderPartitioner.class);
InputSampler.Sampler<Text, Text> sampler = new InputSampler.RandomSampler<Text, Text>(0.1, 200);
InputSampler.writePartitionFile(job, sampler);
Run Code Online (Sandbox Code Playgroud)

我有几个疑问,我寻求社区的帮助:

  1. "全球排序"这个词到底意味着什么?输出究竟是如何排序的,我们仍然有多个分布在整个群集中的输出部分文件?

  2. 如果我们不提供分区文件会发生什么?有没有一种默认的方法来处理这种情况?

java hadoop mapreduce hadoop-partitioning

2
推荐指数
1
解决办法
664
查看次数

Spark mapPartitionsWithIndex :标识一个分区

确定一个分区:

mapPartitionsWithIndex(index, iter)
Run Code Online (Sandbox Code Playgroud)

该方法导致在每个分区上驱动一个函数。我知道我们可以使用“index”参数来跟踪分区。

许多示例都使用此方法使用“index = 0”条件删除数据集中的标题。但是我们如何确保读取的第一个分区(翻译,“index”参数等于 0)确实是标题。如果使用,它是随机的还是基于分区器的。

scala hadoop-partitioning apache-spark rdd

2
推荐指数
1
解决办法
3915
查看次数

在Hadoop中输入采样器

我对InputSampler的理解是它从记录阅读器获取数据并采样密钥,然后在HDFS中创建一个分区文件.

我对此采样器的查询很少:1)此采样任务是否为地图任务?2)我的数据在HDFS上(分布在我的集群的节点上).此采样器是否会在具有要采样数据的节点上运行?3)这会消耗我的地图插槽吗?4)样本是否与我的MR工作的地图任务同时运行?我想通过减少插槽数来知道是否会影响映射器消耗的时间?

hadoop hadoop-partitioning

1
推荐指数
1
解决办法
1770
查看次数

为什么`getNumPartitions()`没有给我"repartition"指定的正确数量的分区?

我有一个textFile和RDD一样:sc.textFile(<file_name>).

我尝试重新分区RDD以加快处理速度:

sc.repartition(<n>).

无论我投入什么<n>,它似乎都没有改变,如下所示:

RDD.getNumPartitions()总是打印相同的数字,(3)无论如何.

如何更改分区数以提高性能?

hadoop-partitioning partition apache-spark pyspark

0
推荐指数
1
解决办法
3433
查看次数

Spark 数据集 withColumn 添加分区 id

我正在尝试编写一个辅助函数,该函数采用任何类型的数据集Dataset[_],并返回一个新列“partitionId”,该列是单个数据单元所属的分区的 ID。

例如,如果我在下面有一个数据集,并且默认情况下它有两个分区。

+-----+------+
| colA|  colB|
+-----+------+
|   1 |     a|
|   2 |     b|
|   3 |     c|
+-----+------+
Run Code Online (Sandbox Code Playgroud)

函数执行后,应该是下面的结果,前两个数据单元属于同一个分区,第三个属于另一个分区。

+-----+------+------------+
| colA|  colB| partitionId|
+-----+------+------------+
|   1 |     a|           1|
|   2 |     b|           1|
|   3 |     c|           2|
+-----+------+------------+
Run Code Online (Sandbox Code Playgroud)

我尝试过 withColumn() 和 mapPartitions(),但没有一个对我有用。对于withColumn(),我无法获取数据单元所属分区的信息,例如withColumn("partitionId", {What should be here to add the partitionId?}) 对于mapPartitions(),我尝试了:

+-----+------+
| colA|  colB|
+-----+------+
|   1 |     a|
|   2 |     b|
|   3 |     c|
+-----+------+
Run Code Online (Sandbox Code Playgroud)

但这仅适用于特定类型,例如Dataset[MyDataType] …

scala dataset hadoop-partitioning apache-spark

-2
推荐指数
1
解决办法
1700
查看次数