1.Hadoop安装

0.系统版本信息

OS:Debian-8.2
JDK:1.8.0_181
Hadoop:2.8.4
A:主机信息
192.168.74.131  master
192.168.74.133  slave1
192.168.74.134  slave2
192.168.74.135  slave3
B:配置好hosts和hostname文件,

    在每台机器上配置好,第一次配置完成后需要reboot,检测是否配置好使用ping master,ping slave1即可

cat /etc/hosts
192.168.74.131  master
192.168.74.133  slave1
192.168.74.134  slave2
192.168.74.135  slave3
root@master:~$ cat /etc/hostnamecat /etc/hostname
master
root@slave1:~$ cat /etc/hostnamecat /etc/hostname
slave1
root@slave2:~$ cat /etc/hostnamecat /etc/hostname
slave1
root@slave3:~$ cat /etc/hostnamecat /etc/hostname
slave3
C:添加hadoop用户,并给予sudo使用权限,需要以root用户身份分别在三台虚拟机上执行
#创建了可以登陆的 hadoop 用户,用户组为hadoop,并使用 /bin/bash 作为 shell
$ groupadd hadoop
$ useradd -g hadoop -m hadoop -s /bin/bash
#设置密码
$ passwd hadoop
#为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题
$ adduser hadoop sudo

    设置sudo为不需要密码

#su - (注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用乎的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)
$ su -
$ vi /etc/sudoers#追加如下内容
#hadoop ALL=(ALL)   ALL#密码5分钟后会失效
hadoop ALL=(ALL) NOPASSWD:ALL#一劳永逸的做法
D.关闭防火墙,关闭selinux,关闭ipv6

    debian默认是不安装selinux

#返回结果是0表示ipv6没有关闭,为1表示ipv6关闭
$cat /proc/sys/net/ipv6/conf/all/disable_ipv6

#关闭方法
$ sudo su -
$ vim  /etc/sysctl.conf
#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

#关闭selinux
#修改配置文件需要重启机器:修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled

#重启
$ reboot

1.master可以ssh免密码登录各台slave机器

    如果ssh免密码登录有问题,需要将每个.ssh/下的所有文件删除重新发送认证文件#每台机器上切换到hadoop用户

$ su hadoop

#在每台机器上ssh localhost在/home/目录下会生成目录.ssh
$ ssh localhost

#master上执行
$ cd /home/hadoop/.ssh
$ ssh-keygen -t rsa    //生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub
$ cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
$ scp authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys
$ scp authorized_keys hadoop@slave2:/home/hadoop/.ssh/authorized_keys
$ scp authorized_keys hadoop@slave3:/home/hadoop/.ssh/authorized_keys

#在master上检测是否可以无密码登录,拷贝完成之后,最好在每个slave下执行
ssh localhost 
#在master下检测是否能够免密码登录,第一次需要密码,然后就不再需要密码了
ssh slave1
ssh slave2
ssh slave3

2.在每台主机上分别安装jdk并配置环境变量,也可以在master上安装好后使用scp

A:下载jdk,解压移动到指定文件夹下
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
tar zxvf jdk-8u181-linux-x64.tar.gz
mv jdk1.8.0_181 /home/hadoop/opt
B:配置环境变量
sudo vim /etc/profile
#Set Java Path
export JAVA_HOME=/home/hadoop/opt/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#立即生效
source /etc/profile
#验证
java -version

3.安装hadoop-2.8.4

    首先所有的机器切换至hadoop用户,su hadoop

    镜像地址http://mirror.bit.edu.cn/apache/hadoop/common/

A:下载hadoop-2.8.4
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
B:解压移动到指定的文件夹下
tar zxvf  hadoop-2.8.4.tar.gz
mv hadoop-2.8.4 /home/hadoop/opt/
C:创建如下目录
cd /home/hadoop/
mkdir data1
cd data1
mkdir dfs 
mkdir tmp   
mkdir dfs/name  
mkdir dfs/data
mkdir dfs/tmp
D:修改目录/home/hadoop/opt/hadoop-2.8.4/etc/hadoop下的配置文件

    #hadoop-env.sh

export JAVA_HOME=/home/hadoop/opt/jdk1.8.0_181

    #yarn-env.sh

export JAVA_HOME=/home/hadoop/opt/jdk1.8.0_181

    #slaves,这里有3个机器,下面dfs.replication中的value不能超过节点数,而且这里有个坑是如果有的文件的副本数不满足这里定义的value时,在后边添加节点或者删除节点后台移动block时会报错,需要修复

slave1
slave2
slave3

    #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/hadoop/data1/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/hadoop/data1/dfs/name</value>
        <description>命名空间和事务在本地文件系统永久存储的路径</description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/data1/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 先创建然后编辑

<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:8040</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.scheduler.address</name>  
        <value>master:8030</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.resource-tracker.address</name>  
        <value>master:8025</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.admin.address</name>  
        <value>master:8041</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.webapp.address</name>  
        <value>master:8088</value>  
    </property>  
</configuration> 
E:将hadoop传输到slave机器上
scp -r /home/hadoop/opt/hadoop-2.8.4 hadoop@slave1:/home/hadoop/opt/
scp -r /home/hadoop/opt/hadoop-2.8.4 hadoop@slave2:/home/hadoop/opt/
scp -r /home/hadoop/opt/hadoop-2.8.4 hadoop@slave3:/home/hadoop/opt/

scp -r /home/hadoop/data1/ hadoop@slave3:/home/hadoop/
scp -r /home/hadoop/data1/ hadoop@slave2:/home/hadoop/
scp -r /home/hadoop/data1/ hadoop@slave1:/home/hadoop/
F:在所有机器上配置环境变量
vim /etc/profile #追加如下内容
#Set Hadoop Path  
export HADOOP_HOME=/home/hadoop/opt/hadoop-2.8.4
export PATH=$PATH:$HADOOP_HOME/sbin  
export PATH=$PATH:$HADOOP_HOME/bin 

#立即生效
source /etc/profile 
G:格式化操作
hadoop namenode -format
H:在master上启动hadoop
启动hadoop
cd /home/hadoop/opt/hadoop-2.8.4/sbin
start-all.sh
#关闭hadoop
stop-all.sh

 

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

 

I:向hadoop集群系统提交第一个mapreduce任务(wordcount)
cd /home/hadoop/opt/hadoop-2.8.4

#在虚拟分布式文件系统上创建一个测试目录/data/input
hdfs dfs -mkdir -p /data/input 

#将当前目录下的README.txt #文件复制到虚拟分布式文件系统中
hdfs dfs -put README.txt  /data/input  

#查看文件系统中是否存在我们所复制的文件
hdfs dfs -ls /data/input    

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

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

#查看result,结果在result下面的part-r-00000中
hdfs dfs -cat /data/output/result/part-r-00000

4.web-ui

http://192.168.74.131:50070
http://192.168.74.131:8088
http://192.168.74.133:8042
http://192.168.74.133:50075

 

posted @ 2017-08-29 17:49  桃源仙居  阅读(179)  评论(0编辑  收藏  举报