hadoop全分布模式
全分布模式特点
- 真正的分布式环境,用于生产
 - 具备Hadoop的所有功能:HDFS、Yarn
 
部署全分布模式
在三台虚拟机上面进行部署
准备工作
1、关闭防火墙(略)
            
            
              java
              
              
            
          
          systemctl stop firewalld.service
systemctl disable firewalld.service
        2、设置主机名
使用xshell工具,对三台虚拟机同时进行操作


            
            
              java
              
              
            
          
          vi /etc/hosts
        
3、免密码登录
ssh-keygen -t rsa 产生自己的公钥和私钥

将自己的公钥都拷贝给对方
            
            
              java
              
              
            
          
          ssh-copy-id -i .ssh/id_rsa.pub root@bigdata112
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata113
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata114
        验证一下,都不需要密码

4、jdk安装(略)
5、同步时间

6、解压和设置环境变量
每台都需要配置环境变量,另外两台虚拟机bigdata113和bigdata114则不需要解压。
操作详细见 在linux上设置Hadoop的环境变量
准备工作已经完成!下面进入正式的部署。
正式配置

hadoop-env.sh
路径:/root/training/hadoop-2.7.3/etc/hadoop($HADOOP_HOME/etc/hadoop)
更改第25行 export JAVA_HOME=/root/training/jdk1.8.0_181
hdfs-site.xml
进入 /root/training/hadoop-2.7.3/etc/hadoop/ 路径找到 hdfs-site.xml 文件进行编辑。

            
            
              java
              
              
            
          
          vi hdfs-site.xml
        将下面xml代码添加该文件
            
            
              xml
              
              
            
          
          <!--数据块的冗余度,默认是3-->
<!--一般来说,数据块冗余度跟数据节点的个数一致,最大不超过3-->
<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<!--禁用了HDFS的权限检查-->
<property>
	<name>dfs.permissions</name>
	<value>false</value>
</property>
        
core-site.xml
需要在hadoop目录下,先创建出tmp文件,作为HDFS对应的操作系统目录。
            
            
              java
              
              
            
          
          mkdir /root/training/hadoop-2.7.3/tmp
        编辑操作与上面文件相同,则不演示。
            
            
              xml
              
              
            
          
          <!--配置NameNode的地址-->
<!--9000是RPC通信的端口-->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://bigdata112:9000</value>
</property>
<!--HDFS对应的操作系统目录-->
<!--默认值是Linux的tmp目录-->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
        mapred-site.xml
这个文件默认没有,需要我们先复制
            
            
              java
              
              
            
          
          cp mapred-site.xml.template mapred-site.xml
        
            
            
              xml
              
              
            
          
          <!--配置MapReduce运行的框架是Yarn-->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>
        yarn-site.xml
            
            
              xml
              
              
            
          
          <!--配置ResourceManager的地址-->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>bigdata112</value>
</property>
<!--MapReduce运行的方式是洗牌-->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>
        slaves
slaves中指定从节点的地址,将localhost改成bigdata113 bigdata114
对NameNode进行格式化
执行下面这条命名
            
            
              java
              
              
            
          
          hdfs namenode -format
        成功则出现下面这句话。

复制到另外两台虚拟机
把bigdata112上的整个hadoop目录复制到bigdata113和bigdata114上面
先进入/root/training目录,执行下面两句完成复制。
            
            
              java
              
              
            
          
          scp -r hadoop-2.7.3/ root@bigdata113:/root/training
scp -r hadoop-2.7.3/ root@bigdata114:/root/training
        启动
在bigdata112上面启动集群
            
            
              java
              
              
            
          
          start-all.sh
        
对部署是否成功进行测试
1、准备数据


2、将本地文件上传到hdfs

3、执行wordcount程序
进入/root/training/hadoop-2.7.3/share/hadoop/mapreduce/
            
            
              java
              
              
            
          
          hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input /output/wc
        4、查看结果
            
            
              java
              
              
            
          
          hdfs dfs -ls /output/wc
hdfs dfs -cat /output/wc/part-r-00000
        
5、停止集群
            
            
              java
              
              
            
          
           stop-all.sh
        
测试完成!部署成功 !!