1、集群环境:
spark2.2.2(独立安装),hadoop3.0.0(CDH搭建)
1、修改windows用户,在本地host,C:\Windows\System32\drivers\etc下host中加入集群节点
192.168.1.180 gw-master
192.168.1.181 gw-slave1
192.168.1.182 gw-slave2
2、在集群中hosts加入本地(最后一段加入本地IP和用户名)
192.168.1.180 gw-master
192.168.1.181 gw-slave1
192.168.1.182 gw-slave2
192.168.1.145 jiangbo
2、hdsf中jars依赖
在hdfs上创建目录,并拷贝spark下的jars所有包到目录中:
创建目录:hdfs dfs -mkdir /sparkjars
jars拷贝:切换到对应的spark下jars目录下,执行 hdfs dfs -put * /sparkjars
3、修改hadoop中yarn-site.xml文件
切换目录cd /etc/hadoop/conf
在yarn-site.xml中添加配置并同步到集群中其他节点:
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
</property>
4、配置文件拷贝
1、在/etc/hadoop/conf目录中拷贝core-site.xml、hdfs-site.xml、yarn-site.xml和spark下conf中的hive-site.xml放到resources(总体4个配置文件)
2、注释core-site.xml中下
<!--<property>-->
<!--<name>net.topology.script.file.name</name>-->
<!--<value>/etc/hadoop/conf.cloudera.yarn/topology.py</value>-->
<!--</property>-->
3、调整hive-site.xml文件如下(gw-master为集群主节点,按照自身环境调整)
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://gw-master:8020/user/hive/tmp</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://gw-master:8020/user/hive/warehouse</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>hdfs://gw-master:8020/user/hive/log</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://gw-master:9083</value>
</property>
5、代码
public class MainSpark
{
public static void main( String[] args )
{
System.setProperty("hadoop.home.dir", "D:\\资源\\scala\\winutils-master\\hadoop-2.7.1");
System.setProperty("HADOOP_USER_NAME", "hdfs");
SparkSession spark = SparkSession.builder().appName("jiangbo")// 指定本程序的名称
.master("yarn-client")
.config("spark.yarn.jars","hdfs://gw-master:8020/sparkjars/*.jar")
//.config("spark.yarn.dist.files", "D:\\javademo\\src\\resources\\yarn-site.xml")
// 因为启动client是需要绑定一个sparkUI的端口(默认4040),如果倍占用的话,则会重新绑定(默认端口+1),重试,所以默认状态下,同时运行的client是16个,调大即可
.enableHiveSupport().getOrCreate();
spark.sql("use 4gcheckthree");
spark.sql("select * from tb_linecard_basic_data limit 20").show();
System.out.println(spark);
}
}
1、"hadoop.home.dir",为自身windows本地hadoop对应路径