部署Hadoop-分布式(高可用)

目录

1.部署所需环境

2.集群规划

3.解压,配置环境变量

4.创建 hadoop 运行时产生文件的存储目录

5.创建白名单,方便服务扩展等

6.配置workers

7.配置hadoop-env.sh

8. 配置core-site.xml

9.配置hdfs-site.xml

11.配置mapred-site.xml

12.配置yarn-site.xml

13.分发hadoop到其他服务器

14.配置第二台服务器的hadoop

15.配置第三台服务器的hadoop

16.启动Hadoop集群

17.测试Hadoop集群


1.部署所需环境

  • JDK
  • Zookeeper
  • 关闭防火墙
  • ssh 免密登录

2.集群规划

机器服务
192.168.179.131 (01.weisx.com)DataNode、NodeManager、NameNode、
JournalNode、ResourceManager、NodeManager、ZKFC
192.168.179.132 (02.weisx.com)DataNode、NodeManager、NameNode、
JournalNode、ResourceManager、NodeManager、ZKFC
192.168.179.133 (03.weisx.com)DataNode、NodeManager、NameNode、
JournalNode、ResourceManager、NodeManager、ZKFC

以下第3到12步操作在192.168.179.131服务器上操作

3.解压,配置环境变量


1 )拷贝Hadoop安装包到01节点~/tools/目录
   
2)解压到~/opt/目录
    tar -zxf hadoop-3.2.4.tar.gz -C /home/weisx/opt/
    
3)创建hadoop软链接    
   ln -s /home/weisx/opt/hadoop-3.2.4 /home/weisx/opt/hadoop
    
4 )配置环境变量

vi ~/.base_profile

 #使环境变量生效: source ~/.bash_profile

4.创建 hadoop 运行时产生文件的存储目录

mkdir data


    

5.创建白名单,方便服务扩展等

vi /home/hadoop/opt/hadoop/etc/hadoop/whitelist

6.配置workers

vi /home/weisx/opt/hadoop/etc/hadoop/workers

7.配置hadoop-env.sh

        配置jdk目录: export JAVA_HOME=/home/weisx/opt/jdk


8. 配置core-site.xml

配置hadoop集群名称、存储目录、zookeeper等信息


<configuration>
    <!-- 把多个 NameNode 的地址组装成一个集群 mycluster -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoopcluster</value>
   </property>
   
    <!-- 指定 hadoop 运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/weisx/opt/hadoop/data-ha</value>
    </property>

   <!-- 指定 zkfc 要连接的 zkServer 地址 -->
   <property>
        <name>ha.zookeeper.quorum</name>
        <value>01.weisx.com:2181,02.weisx.com:2181,03.weisx.com:2181</value>
   </property>
   <!-- NN 连接 JN 重试次数,默认是 10 次 -->
   <property>
        <name>ipc.client.connect.max.retries</name>
        <value>20</value>
   </property>
   <!-- 重试时间间隔,默认 1s -->
   <property>
        <name>ipc.client.connect.retry.interval</name>
        <value>5000</value>
   </property>

   <!-- 在网页界面访问数据使用的用户名。默认值是一个不真实存在的用户,此用户权限很小,不能访问不同用户的数据。这保证了数据安全。也可以设置为hdfs和hadoop等具有较高权限的用户,但会导致能够登陆网页界面的人能看到其它用户数据。实际设置请综合考虑。如无特殊需求。使用默认值dr.who就好 -->
   <property>
        <name>hadoop.http.staticuser.user</name>
        <value>weisx</value>
   </property>
</configuration>

9.配置hdfs-site.xml

<configuration>

     <!-- 白名单,方便服退役新节点 -->
     <property>
         <name>dfs.hosts</name>
         <value>/home/weisx/opt/hadoop/etc/hadoop/whitelist</value>
     </property>
     <!-- 数据块副本数为3 -->
     <property>
         <name>dfs.replication</name>
         <value>3</value>
     </property>

     <!-- NameNode 数据存储目录 -->
     <property>
         <name>dfs.namenode.name.dir</name>
         <value>file://${hadoop.tmp.dir}/name</value>
     </property>
     <!-- DataNode 数据存储目录 -->
     <property>
         <name>dfs.datanode.data.dir</name>
         <value>file://${hadoop.tmp.dir}/data</value>
     </property>
     <!-- JournalNode 数据存储目录 -->
     <property>
		 <name>dfs.journalnode.edits.dir</name>
         <value>${hadoop.tmp.dir}/jn</value>
     </property>
     <!-- 完全分布式集群名称,与core-site.xml里fs.defaultFS的值要对应 -->
     <property>
         <name>dfs.nameservices</name>
         <value>hadoopcluster</value>
     </property>
     <!-- 集群中 NameNode 节点都有哪些 -->
     <property>
         <name>dfs.ha.namenodes.hadoopcluster</name>
         <value>nn1,nn2,nn3</value>
     </property>
     <!-- NameNode 的 RPC 通信地址 -->
     <property>
         <name>dfs.namenode.rpc-address.hadoopcluster.nn1</name>
         <value>01.weisx.com:8020</value>
     </property>
     <property>
         <name>dfs.namenode.rpc-address.hadoopcluster.nn2</name>
         <value>02.weisx.com:8020</value>
     </property>
     <property>
         <name>dfs.namenode.rpc-address.hadoopcluster.nn3</name>
         <value>03.weisx.com:8020</value>
     </property>
     <!-- NameNode 的 http 通信地址 -->
     <property>
         <name>dfs.namenode.http-address.hadoopcluster.nn1</name>
         <value>01.weisx.com:9870</value>
     </property>
     <property>
         <name>dfs.namenode.http-address.hadoopcluster.nn2</name>
         <value>02.weisx.com:9870</value>
     </property>
     <property>
         <name>dfs.namenode.http-address.hadoopcluster.nn3</name>
         <value>03.weisx.com:9870</value>
     </property>
     <!-- 启用 nn 故障自动转移 -->
     <property>
         <name>dfs.ha.automatic-failover.enabled</name>
         <value>true</value>
     </property>
	 
     <!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 -->
     <property>
         <name>dfs.namenode.shared.edits.dir</name>
         <value>qjournal://01.weisx.com:8485;02.weisx.com:8485;03.weisx.com:8485/hadoopcluster</value>
     </property>
     <!-- 访问代理类:client 用于确定哪个 NameNode 为 Active -->
     <property>
         <name>dfs.client.failover.proxy.provider.hadoopcluster</name>
         <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
     </property>
     <!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
     <property>
         <name>dfs.ha.fencing.methods</name>
         <value>sshfence</value>
     </property>
     <!-- 使用隔离机制时需要 ssh 秘钥登录-->
     <property>
         <name>dfs.ha.fencing.ssh.private-key-files</name>
         <value>/home/weisx/.ssh/id_rsa</value>
     </property>
     

</configuration>

11.配置mapred-site.xml


<configuration>
    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 历史服务器端地址 -->
    <property>
       <name>mapreduce.jobhistory.address</name>
       <value>01.weisx.com:10020</value>
   </property>

   <!-- 历史服务器web端地址 -->
   <property>
       <name>mapreduce.jobhistory.webapp.address</name>
       <value>01.weisx.com:19888</value>
   </property>

</configuration>

12.配置yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
    <!-- 执行MapReduce需要配置的shuffle过程 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 启用 resourcemanager ha -->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <!-- 给yarn cluster 取个名字 -->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yarncluster</value>
    </property>
    <!--给ResourceManager 取个名字-->
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2,rm3</value>
    </property>
    <!-- ========== rm1 的配置 ========== -->
    <!-- 指定 rm1 的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>01.weisx.com</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>01.weisx.com:8088</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address.rm1</name>
        <value>01.weisx.com:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address.rm1</name>
        <value>01.weisx.com:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
        <value>01.weisx.com:8031</value>
    </property>
    <!-- ========== rm2 的配置 ========== -->
   <!-- 指定 rm2 的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>02.weisx.com</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>02.weisx.com:8088</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address.rm2</name>
        <value>02.weisx.com:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address.rm2</name>
        <value>02.weisx.com:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
        <value>02.weisx.com:8031</value>
    </property>
    <!-- ========== rm3 的配置 ========== -->
    <!-- 指定 rm3 的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname.rm3</name>
        <value>03.weisx.com</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address.rm3</name>
        <value>03.weisx.com:8088</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address.rm3</name>
        <value>03.weisx.com:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address.rm3</name>
        <value>03.weisx.com:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address.rm3</name>
        <value>03.weisx.com:8031</value>
    </property>

    <!-- 指定 zookeeper 集群的地址 --> 
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>01.weisx.com:2181,02.weisx.com:2181,03.weisx.com:2181</value>
    </property>
    <!-- 启用自动恢复 --> 
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
    <!-- 指定 resourcemanager 的状态信息存储在 zookeeper 集群 --> 
    <property>
        <name>yarn.resourcemanager.store.class</name> 
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME,SPARK_HOME</value>
    </property>
    <property>
        <!-- 启用节点的内容和CPU自动检测,最小内存为1G -->
        <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
        <value>false</value>
    </property>

    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>512</value> <!-- 资源分配值8G -->
    </property>
    <!-- scheduler最大核数 -->
    <property>
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>1</value>
    </property>
    <!-- 单个Container能够使用的最大内存 -->
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>1024</value>
    </property>
    <!-- 该参数的含义是,单个Container能够使用的最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
		<value>126</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.resource.mb</name>
        <value>1024</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>1</value>
    </property>
    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>

    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <!-- 开启日志聚集功能 -->
    <property>
	    <name>yarn.log-aggregation-enable</name>
	    <value>true</value>
    </property>
    <!-- 设置日志聚集服务器地址 -->
    <property>  
	    <name>yarn.log.server.url</name>  
	    <value>http://01.weisx.com:19888/jobhistory/logs</value>
    </property>
	<!-- 设置日志保留时间为7天 -->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>604800</value>
	</property>
    <property>
        <name>yarn.resourcemanager.am.max-attempts</name>
        <value>1</value>
        <description>
        The maximum number of application master execution attempts.
        </description>
    </property>
</configuration>

13.分发hadoop到其他服务器

scp -r /home/weisx/opt/hadoop-3.2.4 02.weisx.com:~/opt

scp -r /home/weisx/opt/hadoop-3.2.4 03.weisx.com:~/opt

以下第14步操作在192.168.179.132服务器上操作

14.配置第二台服务器的hadoop

1 ) 创建hadoop软链接    
   ln -s /home/weisx/opt/hadoop-3.2.4 /home/weisx/opt/hadoop
2)配置环境变量

vi ~/.base_profile

 #使环境变量生效: source ~/.bash_profile

以下第15步操作在192.168.179.133服务器上操作

15.配置第三台服务器的hadoop

1 ) 创建hadoop软链接    
   ln -s /home/weisx/opt/hadoop-3.2.4 /home/weisx/opt/hadoop


2)配置环境变量

vi ~/.base_profile

 #使环境变量生效: source ~/.bash_profile

以下第16步操作在192.168.179.131服务器上操作

16.启动Hadoop集群

 0)启动zookeeper
    zkServer.sh start

 0)启动所有节点journalnode进程
    hdfs --daemon start journalnode

 1)注意只格式化一次,之后再格式化会使数据丢失
    hdfs namenode -format
 

 2)格式化高可用(Zookeeper里的hadoop信息)
     hdfs zkfc -formatZK

  3)启动namenode
   hdfs --daemon start namenode
   
  4)需要在备节点192.168.179.132同步主节点的元数据信息
    hdfs namenode -bootstrapStandby
    
   5)需要在备节点192.168.179.133同步主节点的元数据信息
    hdfs namenode -bootstrapStandby


   6)namenode元数据同步完数据后,紧接着在主节点节点上,结束namenode进程
   hdfs --daemon stop namenode
    

   7)关闭所有节点上面的journalnode进程
    hdfs --daemon stop journalnode

 8)重启启动hadoop
   在主节点上分别执行:start-dfs.sh 和 start-yarn.sh 启动dfs和yarn或者 执行start-all.sh

 9)Web 端查看 HDFS 的 NameNode

http://192.168.179.131:9870

17.测试Hadoop集群

   1)在192.168.179.131服务器上上传文件到hadoop集群


   2)在192.168.179.132查看hadoop集群文件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_37559973

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值