13.Hadoop环境搭建

一、安装Linux系统

  虚拟机+Debian7.8  

二、启用网卡,配置IP

ifconfig -a
   eth1      Link encap:Ethernet  HWaddr 00:0C:29:9B:0A:F0
cd /etc/sysconfig/network-scripts
vim ifcfg-eth0
     DEVICE=eth1
     HWADDR=00:0C:29:9B:0A:F0
     TYPE=Ethernet
     UUID=84cccf69-756b-4ee7-8f34-0486cdd88576
     ONBOOT=yes
     NM_CONTROLLED=yes
     BOOTPROTO=dhcp
ifconfig eth1 up
service network restart

三、安装vsftpd

yum install –y vsftpd
cd /etc/vsftpd/
vim vsftpd.conf
	anonymous_enable=NO
	local_enable=YES
	ascii_upload_enable=YES
	ascii_download_enable=YES
	chroot_local_user=YES
	chroot_list_enable=YES
	chroot_list_file=/etc/vsftpd/chroot_list
vim chroot_list
     插入ftpuser
useradd -d /var/ftp/public -g ftp -s /sbin/nologin ftpuser
passwd ftpuser
vim /etc/selinux/config
     SELINUX=disabled
service vsftpd start
service iptables stop

chkconfig iptables off
chkconfig vsftpd on
reboot now

四、安装jdk,使用root帐户

1.下载jdk(jdk-7u80-linux-x64.rpm),并用ftp上传到/var/ftp/public文件夹下,创建文件夹/usr/java,并把jdk拷贝到该文件夹下,解压安装

cp jdk-7u80-linux-x64.rpm /usr/java
rpm -ivh jdk-7u80-linux-x64.rpm

2.配置环境变量

vim /etc/profile
//在文件末尾追加如下内容
JAVA_HOME=/usr/java/jdk1.7.0_80
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

3.立即生效

source /etc/profile

4.验证安装是否成功

java
javac
java -version

五、克隆三份虚拟机,注意网卡的配置

//1.准备四台机器
debian-1: 192.168.163.129         master
debian-2: 192.168.163.130         slave-1
debian-3: 192.168.163.131         slave-2


//2.使用root帐户设置主机名和dns解析,需要在master和slave上都需要进行设置
vim /etc/hostname
master
       //其他几台虚拟机分别是slave-1,slave-2
vim /etc/hosts#就这么多,不能再多了
127.0.0.1           localhost
192.168.163.129     master
192.168.163.130     slave-1
192.168.163.131     slave-2

//3.测试,在每台虚拟机上ping master slave-1/2

六、使用hadoop用户Master免SSH密码登陆Slave

A若想无密码访问B,就需要把A的公钥发送给B,B把A发来的公钥添加到自己的授权文件里。Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

值得注意的是如果之前没有用ssh登陆过root账号,在根目录下可能没有.ssh目录,只需要登陆一次就可以生成改目录:ssh localhost

1.Master机器上生成密码对

   ssh-keygen -t rsa    //生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub
   cd
   cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys   //把id_rsa.pub追加到授权的key里面去
   chmod 600 ~/.ssh/authorized_keys   //修改文件"authorized_keys"权限
   ssh localhost     //(测试是否成功)

2.下面是把公钥复制到所有的slave节点上去

   scp /.ssh/authorized_keys root@slave-1:~/.ssh/
   scp authorized_keys root@slave-2:~/.ssh/

到这里,我的master节点的公钥已经发送到了slave-1/2的目录/root/.ssh/下,现在登录slave-1/2节点查看有没有该文件。

3.到这里,master节点已经可以无密码访问slave-1节点了,现在在master节点虚拟机上操作,测试是否已经成功,命令是:ssh slave-1,如果不输入密码登录成功就说明master无密码访问slave-1成功.首次登陆需要密码

七、Hadoop配置master配置hadoop,然后将master的hadoop文件传送给node节点

 1.下载hadoop版本:hadoop-2.8.1.tar.gz

 2.创建/home/ops目录

 3.解压安装tar -zxvf  hadoop-2.8.1.tar.gz

 4.移动文件到/usr/hadoop中:mv hadoop-2.8.1 /home/ops/

 5.在/home/ops/hadoop-2.8.1目录下新建如下目录

  mkdir dfs 
  mkdir tmp   
  mkdir /dfs/name  
  mkdir /dfs/data
  mkdir /dfs/tmp

 6.修改/home/ops/hadoop-2.8.1/etc/hadoop下的配置文件

   #hadoop-env.sh
   export JAVA_HOME=/usr/java/jdk1.7.0_80
   #yarn-env.sh
   export JAVA_HOME=/usr/java/jdk1.7.0_80
   #slaves
   slave-1
   slave-2
   
   #core-site.xml
   <configuration>  
    <property>  
        <name>fs.defaultFS</name>  
        <value>hdfs://master:9000</value>
        <description>NameNode URI</description> 
    </property>  
    <property>  
        <name>io.file.buffer.size</name>  
        <value>131072</value> 
        <description>该属性值单位为KB,131072KB即为默认的64M,SequenceFiles文件中.读写缓存size设定</description> 
    </property>  
    <property>  
        <name>hadoop.tmp.dir</name>  
        <value>file:/home/ops/hadoop-2.8.1/tmp</value>   
        <description>Abase for other temporary   directories.</description>  
    </property>  
  </configuration>     
 
   #hdfs-site.xml
   <configuration>  
       <property>  
               <name>dfs.namenode.secondary.http-address</name>  
               <value>master:9001</value>  
       </property>  
     <property>  
             <name>dfs.namenode.name.dir</name>  
             <value>file:/home/ops/hadoop-2.8.1/dfs/name</value> 
             <description>命名空间和事务在本地文件系统永久存储的路径</description>
       </property>  
      <property>  
              <name>dfs.datanode.data.dir</name>  
              <value>file:/home/ops/hadoop-2.8.1/dfs/data</value>  
       </property>  
       <property>  
               <name>dfs.replication</name>  
               <value>3</value>
               <description>分片数量,伪分布式将其配置成1即可</description>  
        </property>  
        <property>  
                 <name>dfs.webhdfs.enabled</name>  
                 <value>true</value>  
         </property>  
    </configuration>  
  
  
    #mapred-site.xml 先创建然后编辑
    cp/usr/hadoop/etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
    vim mapred-site.xml
    <configuration>  
          <property>                                                                    
         <name>mapreduce.framework.name</name>  
              <value>yarn</value>  
          </property>    
     </configuration>  
    
 
    #yarn-site.xml
    <configuration>  
        <property>  
               <name>yarn.nodemanager.aux-services</name>  
               <value>mapreduce_shuffle</value>  
        </property>  
        <property>                                                                  
            <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
        </property>  
        <property>  
            <name>yarn.resourcemanager.address</name>  
            <value>master:18040</value>  
       </property>  
       <property>  
            <name>yarn.resourcemanager.scheduler.address</name>  
            <value>master:18030</value>  
       </property>  
       <property>  
            <name>yarn.resourcemanager.resource-tracker.address</name>  
            <value>master:18025</value>  
      </property>  
      <property>  
              <name>yarn.resourcemanager.admin.address</name>  
              <value>master:18041</value>  
       </property>  
       <property>  
               <name>yarn.resourcemanager.webapp.address</name>  
               <value>master:18088</value>  
       </property>  
    </configuration>   

7.将hadoop传输到node1和node2 usr/hadoop目录

  
   scp -r /home/ops/hadoop-2.8.1 root@slave-1:/home/ops/
   scp -r /home/ops/hadoop-2.8.1 root@slave-2:/home/ops/

8.在所有机器上配置环境变量,并启动hadoop,检查是否安装成功

  
   vim /etc/profile //追加如下内容
   #hadoop  
   export HADOOP_HOME=/home/ops/hadoop-2.8.1  
   export PATH=$PATH:$HADOOP_HOME/sbin  
   export PATH=$PATH:$HADOOP_HOME/bin 

立即生效

  
   source /etc/profile 

启动hadoop,进入hadoop安装目录/home/ops/hadoop-2.8.1

#bin/hdfs namenode -format
   ----------------------一定要切记,在启动之前一定要进行格式化操作-----------------------------
   bin/hadoop namenode -format
   sbin/hadoop-daemon.sh start namenode 
   sbin/hadoop-daemons.sh start datanode
   sbin/yarn-daemon.sh start resourcemanager
    
   bin/hadoop dfsadmin -report#查看report是否启动成功,会有使用情况的统计显示
   访问http://192.168.163.129:50070以及http://192.168.163.129:18088
#快捷方式启动hadoop组件 
sbin/start-all.sh 
sbin/stop-all.sh

启动后分别在master, node下输入jps查看进程

8.向hadoop集群系统提交第一个mapreduce任务(wordcount)

 
   bin/hdfs dfs -mkdir -p /data/input #在虚拟分布式文件系统上创建一个测试目录/data/input
   bin/hdfs dfs -put README.txt  /data/input  #将当前目录下的README.txt 文件复制到虚拟分布式文件系统中
   bin/hdfs dfs -ls /data/input    #查看文件系统中是否存在我们所复制的文件
  

运行如下命令向hadoop提交单词统计任务

   
   hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount /data/input /data/output/result

查看result,结果在result下面的part-r-00000中

  
   hdfs dfs -cat /data/output/result/part-r-00000  

八、自此,hadoop集群搭建成功!

posted @ 2017-07-02 21:54  桃源仙居  阅读(113)  评论(0)    收藏  举报