Hadoop http address绑定内网地址

2019-03-28 13:20|来源: 网络

Hadoop默认配置里http address接口domain段均为0.0.0.0,表示可通过任一网卡访问http接口,对于双网卡服务器(一个内网,一个外网),意味着公网用户可以随意访问hadoop系统开放的web资源,存在极大的安全隐患。

我们可以修改配置将domain段替换成内网IP,这对于dfs.http.address、mapred.job.tracker.http.address没什么问题,但dfs.datanode.http.address需要到每个datanode上去修改,这太不现实了,可以通过以下方法实现自动配置。

通过local.bind.address参数 为http address绑定内网IP:

1、修改$HADOOP_HOME/conf/hadoop-env.sh

  1. #bind_ip=$(/sbin/ifconfig eth1:0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}')
  2. #replace eth1:0 with your NIC / alias 这种方式需要所有机器内外网对应的网卡顺序一致
  3. #bind_ip=$(/sbin/ifconfig | fgrep 'inet addr:172.16' | cut -d: -f2 | awk '{print $1}')
  4. #这种方式需要所有机器内网IP前缀一致
  5. bind_ip=$(/bin/hostname)
  6. #这种方式需要在/etc/hosts里将hostname指向内网IP
  7. export BIND_OPTS="-Dlocal.bind.address=${bind_ip}"
  8. # Command specific options appended to HADOOP_OPTS when specified
  9. export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS $BIND_OPTS"
  10. export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS $BIND_OPTS"
  11. export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS $BIND_OPTS"
  12. export HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS $BIND_OPTS"
  13. export HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS $BIND_OPTS"

2、修改$HADOOP_HOME/conf/hdfs-site.xml

  1. <property>
  2. <property>
  3. <name>dfs.http.address</name>
  4. <value>${local.bind.address}:50070</value>
  5. </property>
  6. <property>
  7. <name>dfs.https.address</name>
  8. <value>${local.bind.address}:50470</value>
  9. </property>
  10. <property>
  11. <name>dfs.secondary.http.address</name>
  12. <value>${local.bind.address}:50090</value>
  13. </property>
  14. <property>
  15. <name>dfs.datanode.address</name>
  16. <value>${local.bind.address}:50010</value>
  17. </property>
  18. <property>
  19. <name>dfs.datanode.ipc.address</name>
  20. <value>${local.bind.address}:50020</value>
  21. </property>
  22. <property>
  23. <name>dfs.datanode.http.address</name>
  24. <value>${local.bind.address}:50075</value>
  25. </property>
  26. <property>
  27. <name>dfs.datanode.https.address</name>
  28. <value>${local.bind.address}:50475</value>
  29. </property>

3、修改$HADOOP_HOME/conf/mapred-site.xml

  1. <property>
  2. <name>mapred.job.tracker.http.address</name>
  3. <value>${local.bind.address}:50030</value>
  4. </property>
  5. <property>
  6. <name>mapred.task.tracker.http.address</name>
  7. <value>${local.bind.address}:50060</value>
  8. </property>

4、重启

  1. $HADOOP_HOME/bin/stop-all.sh
  2. $HADOOP_HOME/bin/start-all.sh

相关问答

更多
  • 它们被分离出来,因为这两个包都代表2个不同的API。 org.apache.hadoop.mapred是旧的API, org.apache.hadoop.mapreduce是新的。 这样做是为了让程序员以更方便,更简单和复杂的方式编写MapReduce作业。 您可能会发现此演示文稿很有用,其中详细讨论了不同之处。 希望这回答你的问题。 They are separated out because both of these packages represent 2 different APIs. org.a ...
  • 我犯的错误是使用实例的公有IP而不是亚马逊分配的本地IP(10.XXX)。 这解决了这个问题。 The mistake I made was to use the public IP of the instances instead of the Amazon allocated local IP (10.X.X.X). That fixed the issue.
  • 是的,你会遇到资源不足的问题。 出于测试目的,禁用内存检查: yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.vmem-check-enabled false 对于yarn.schedu ...
  • fs.defaultFS定义的端口用于文件系统元数据操作。 您无法使用它来访问Web UI。 8042用于NodeManager Web UI, 8032用于ResourceManager IPC。 参考 hdfs-default.xml - 用于HDFS相关端口 yarn-default.xml - 用于YARN相关端口 mapred-default.xml - 用于JHS相关端口。 The port defined in fs.defaultFS is for file system metadata ...
  • 您尚未指定您正在使用的Hadoop版本。 在这个问题上有一个JIRA,修正版从v2.9开始可用 https://issues.apache.org/jira/browse/YARN-4330?devStatusDetailDialog=repository 您可以尝试根据您的系统配置设置以下参数。 YARN中有两种计算器可用 - DefaultResourceCalculator和DominantResourceCalculator。 在执行计算时, DefaultResourceCalculator只考虑 ...
  • Hadoop 2中不再存在JobTracker和TaskTracker.JobTracker功能分为Resourcemanager和Applicationmaster。 请参阅此文档 你可以在下面找到类似的问题。 Hadoop 2.2.0 jobtracker没有启动 JobTracker and TaskTracker are no longer exists in Hadoop 2. JobTracker functionality split up into Resourcemanager and A ...
  • 这可能发生在作业仅检测到本地文件系统的情况下,它使用LocalFileSystem API与本地文件系统中的文件进行交互。 请参考以下链接, 使用MiniDFSCluster单元测试hadoop hdfs着作 这是我们在开发环境中开发的mapreduce / hdfs代码的单元测试选项之一。虽然在hadoop clsuter中部署相同的代码,但输入文件将在HDFS位置。 This probably happens in the scenario where the job only detects the ...
  • 下载osquery https://code.facebook.com/projects/658950180885092 并安装 发出这个命令osqueryi 当出现提示时,使用此sql命令查看所有正在运行的java进程并找到pids SELECT名称,路径,pid FROM进程,其中name =“java”; 你会在Mac上看到这样的东西 +------+-------------------------------------------------------------------------- ...
  • KMS基本上是HDFS本机数据加密实用程序的一部分,用于存储加密密钥。您现在可以加密HDFS中的选定文件或目录,而无需更改任何应用程序代码。 HDFS管理员设置加密,然后HDFS负责实际加密或解密,而最终用户无需手动加密或解密文件。 以下术语描述了透明数据加密(TDE)的关键领域: 加密区域 - HDFS管理员创建加密区域,然后将其链接到空的HDFS目录和加密密钥。 放入目录中的所有文件都由HDFS自动加密。 密钥管理服务器(KMS) - KMS负责存储加密密钥。 KMS为存储在KMS中的密钥提供REST ...
  • HFTP用于从不同hadoop版本的远程集群中读取数据。 它独立于目标集群中的hadoop版本。 HFTP与disctp结合使用。 与http不同,HFTP是只读的。 看看http://docs.spring.io/spring-hadoop/docs/1.0.1.RELEASE/reference/html/fs.html HFTP is used to read data from remote clusters of different hadoop versions. It is independe ...