我在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) 我正在研究基于 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
我现在正在学习分区概念.任何人都可以解释下面的代码.我很难理解
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,我正在使用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)
我有几个疑问,我寻求社区的帮助:
"全球排序"这个词到底意味着什么?输出究竟是如何排序的,我们仍然有多个分布在整个群集中的输出部分文件?
如果我们不提供分区文件会发生什么?有没有一种默认的方法来处理这种情况?
确定一个分区:
mapPartitionsWithIndex(index, iter)
Run Code Online (Sandbox Code Playgroud)
该方法导致在每个分区上驱动一个函数。我知道我们可以使用“index”参数来跟踪分区。
许多示例都使用此方法使用“index = 0”条件删除数据集中的标题。但是我们如何确保读取的第一个分区(翻译,“index”参数等于 0)确实是标题。如果使用,它是随机的还是基于分区器的。
我对InputSampler的理解是它从记录阅读器获取数据并采样密钥,然后在HDFS中创建一个分区文件.
我对此采样器的查询很少:1)此采样任务是否为地图任务?2)我的数据在HDFS上(分布在我的集群的节点上).此采样器是否会在具有要采样数据的节点上运行?3)这会消耗我的地图插槽吗?4)样本是否与我的MR工作的地图任务同时运行?我想通过减少插槽数来知道是否会影响映射器消耗的时间?
我有一个textFile
和RDD一样:sc.textFile(<file_name>)
.
我尝试重新分区RDD以加快处理速度:
sc.repartition(<n>)
.
无论我投入什么<n>
,它似乎都没有改变,如下所示:
RDD.getNumPartitions()
总是打印相同的数字,(3)
无论如何.
如何更改分区数以提高性能?
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] …