Windows运行HdfsExample配置步骤:
普通模式:
- 为集群的每个节点申请弹性公网ip,并将本地Windows的hosts文件添加所有节点的公网IP对应主机域名的组合(注意如何主机名中出现大写字母要改成小写,因为Linux不区分大小写,Windows区分)
a.在弹性公网ip购买eip(集群有几个节点就买几个)
b.在集群节点管理那为节点绑定a中购买的eip
c.记录公网IP和私网IP的对应关系将hosts文件中的私网IP改为对应的公网ip
2.配置集群安全组开发Windows的ip的8020和9866端口
3.在集群的hdfs上下载hdfs客户端,将客户端中的core-site.xml和hdfs-site.xml复制到样例工程的conf目录下,对hdfs-site.xml添加
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
(将datanode的通信改成通过hostname)
4.样例工程,开始会报一个没有hadoop_home的异常,这个不用管不影响。
安全模式:
- 将conf文件中的IP改成对应的主机名称
- 配置集群安全组开发Windows的ip的21730TCP,21731TCP/UDP,21732TCP/UDP端口
- 将样例代码中的PRNCIPAL_NAME改为安全认证的用户名
Windows运行hive-jdbc-example配置步骤:
普通模式:
- 为集群的每个节点申请弹性公网ip,并将本地Windows的hosts文件添加所有节点的公网IP对应主机域名的组合(注意如何主机名中出现大写字母要改成小写,因为Linux不区分大小写,Windows区分)
- 配置集群安全组开发Windows的ip的10000端口
- 在集群的hive上下载hive客户端,将客户端中的core-site.xml和properties复制到样例工程的resources目录下
- 修改样例代码中的jdbc url将使用kafka的连接改为直接使用hiveserver2的地址连接(因为使用zookeeper连接会访问zk的/hiveserver2目录下的ip,但是里面存储的是私有IP,本地Windows无法连通),到hive上找到hiveserver2服务的主机名,将url改为jdbc:hive2:// hiveserver主机名:10000/
安全模式:
- 将conf文件中的IP改成对应的主机名称
- 配置集群安全组开发Windows的ip的21730TCP,21731TCP/UDP,21732TCP/UDP端口
- 将样例代码中的PRNCIPAL_NAME改为安全认证的用户名(主意要使用有hive权限的用户)
Windows访问Kafka(包括kafka的生产者消费者,sparkstreaming,flink生产和消费kafka)配置步骤:
普通模式:
- 为集群的每个节点申请弹性公网ip,并将本地Windows的hosts文件添加所有节点的公网IP对应主机域名的组合(注意如何主机名中出现大写字母要改成小写,因为Linux不区分大小写,Windows区分)
- 配置集群安全组开发Windows的ip的9092
- 添加kafka集群配置添加config.expandor中键值对advertised.listeners = PLAINTEXT://:9092,SSL://:9093,TRACE://:21013 修改配置后重启kafka集群。
4. 将kafka的连接串改成hostname1:9092, hostname2:9092, hostname3:9092
安全模式:
- 将conf文件中的IP改成对应的主机名称
- 配置集群安全组开发Windows的ip的21007
- 添加kafka集群配置添加config.expandor中键值对advertised.listeners =SASL_PLAINTEXT://:21007,SASL_SSL://:21009,TRACE://:21013修改配置后重启kafka集群。
- 将kafka的连接串改成hostname1: 21007, hostname2: 21007, hostname3: 21007
普通模式Windows运行spark访问hadoop(SparkScalaExample)配置步骤:
- 为集群的每个节点申请弹性公网ip,并将本地Windows的hosts文件添加所有节点的公网IP对应主机域名的组合(注意如何主机名中出现大写字母要改成小写,因为Linux不区分大小写,Windows区分)
- 配置集群安全组开发Windows的ip的8020和9866端口
- 在集群的hdfs上下载hdfs客户端,将客户端中的core-site.xml和hdfs-site.xml复制到样例工程的conf目录下,对hdfs-site.xml添加
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>将datanode的通信改成通过hostname
4. 对xml文件加入
<dependency>
<groupId>com.huawei.mrs</groupId>
<artifactId>hadoop-plugins</artifactId>
<version>8.0.2-302002</version>
</dependency>
否则样例运行时会报org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider这个类找不到
5. 对SparkSession加入.master("local").config("spark.driver.host", "localhost")配置spark为本地运行模式
安全模式:
- 将conf文件中的IP改成对应的主机名称
- 配置集群安全组开发Windows的ip的21730TCP,21731TCP/UDP,21732TCP/UDP端口
- 将样例代码中的PRNCIPAL_NAME改为安全认证的用户名
总结:
- 通过eip访问集群主要是对需要的访问的集群组件的IP修改成hostname,和端口开放。像类似spark和flink这种这种分析组件因为是在本地运行,所以不需要做额外的端口和ip的修改。
- 安全集群相对于普通集群多了个kerboers认证,所以安全集群的组件比普通集群就是多了对kerboers的conf文件中的ip改为hostname和21730(TCP),21731(TCP/UDP),21732(TCP/UDP)的端口的放开。
- 总之,eip访问最根本的原因就是本地与集群所使用的内网ip不通,所以所有的连通问题都是要将访问组件的内网ip改为访问hostname,和对应端口的开放。