1、请用java实现非递归二分查询
public class BinarySearchClass
{
public static int binary_search(int[] array, int value)
{
int beginIndex = 0;// 低位下标
int endIndex = array.length - 1;// 高位下标
int midIndex = -1;
while (beginIndex <= endIndex) {
midIndex = beginIndex + (endIndex - beginIndex) / 2;//防止溢出
if (value == array[midIndex]) {
return midIndex;
} else if (value < array[midIndex]) {
endIndex = midIndex - 1;
} else {
beginIndex = midIndex + 1;
}
}
return -1;
//找到了,返回找到的数值的下标,没找到,返回-1
}
//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
public static void main(String[] args)
{
System.out.println("Start...");
int[] myArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9 };
System.out.println("查找数字8的下标:");
System.out.println(binary_search(myArray, 8));
}
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
}
2、是客户端还是Namenode决定输入的分片?
这并不是客户端决定的,在配置文件中以及决定分片细则。
3、mapred.job.tracker命令的作用?
可以让你知道哪个节点是Job Tracker。
4、全分布模式又有什么注意点?
全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及task tracker运行的主机。在分布式环境下,主节点和从节点会分开。
5、hive 跟hbase的区别
共同点都是用hadoop作为底层存储
区别:hive是为了减少mrjobs编写工作的批处理系统,处理速度慢。hive本身不存储数据和计算数据,依赖于hadoop,纯逻辑表
hbase是为了hadoop对实时操作的缺陷的项目,处理速度快,是物理表,提供一个超大的内存hash表,方便查询操作
如果全表扫描用 hive+hadoop
如果用索引查询与hbase+hadoop
是处理数据库文件还是读取文本文件
先读取文本文件进行清洗,然后放入hdfs,进行处理
或者直接读取MySQL中格式化数据
6、请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?
NameNode: HDFS的守护进程,负责记录文件是如何分割成数据块,以及这些数据块分别被存储到那些数据节点上,它的主要功能是对内存及IO进行集中管理
Secondary NameNode:辅助后台程序,与NameNode进行通信,以便定期保存HDFS元数据的快照。
DataNode:负责把HDFS数据块读写到本地的文件系统。
JobTracker:负责分配task,并监控所有运行的task。
TaskTracker:负责执行具体的task,并与JobTracker进行交互。
7、KafkaUtils.createDstream 和 KafkaUtils.createDirectstream 区别
使用一个 receiver 接收器接收数据,接收到的数据将会保存到executor中,然后通过sparkStreaming 启动job来处理数据,默认不会丢失,可启动WAL日志,保存到hdfs上
spark.streaming.recever.writeAheadLog.enable=true 同时开启 StorageLevel.MeMORY_AND_DISK_SER_2
KafkaUtils.createDirectstream方式,他定期从Kafka的分区中查询偏移量,再根据偏移量范围在每个batch里面处理数据
优点:简化并行 高效 恰好一次被消费
hbase
8、Kafka与传统消息队列的区别
RabbitMQ吞吐量稍差Kafka,支持对消息可靠的传递,支持事务,不支持批量的操作,存储于内存或者磁盘
Kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消费的消费信息保存在客户端consumer上,consumer根据消费的点,从broker批量pull数据;无消息确认机制
Kafka具有搞得吞吐量,内部采用消息的批量处理,数据的存储和获取是本地磁盘顺序批量操作,消息处理的效率高
Kafka 的broker支持主备模式
Kafka 负载均衡 Zookeeper方向
Kafka采用Zookeeper进行管理,可以注册topic到Zookeeper上,通过zoo的协调机制,生产者保存对应topic的broker消息,可以随机或者轮询发送到broker上;并且生产者可以基于予以定义指定分片,消息发送到broker的某分片上
9、Master文件是否提供了多个入口?
是的你可以拥有多个Master文件接口。
10、Spark的数据本地性有哪几种?
Spark中的数据本地性有三种:
1、 PROCESS_LOCAL是指读取缓存在本地节点的数据
2、 NODE_LOCAL是指读取本地节点硬盘数据
3、 ANY是指读取非本地节点数据
通常读取数据PROCESS_LOCAL>NODE_LOCAL>ANY,尽量使数据以PROCESS_LOCAL或NODE_LOCAL方式读取。其中PROCESS_LOCAL还和cache有关,如果RDD经常用的话将该RDD cache到内存中,注意,由于cache是lazy的,所以必须通过一个action的触发,才能真正的将该RDD cache到内存中。