1、创建用户
1. 创建hadoop用户组
sudo addgroup hadoop
2. 创建hadoop用户
sudo adduser -ingroup hadoop hadoop
3. 给hadoop用户添加权限,打开/etc/sudoers文件
sudo gedit /etc/sudoers
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL
2、配置ssh免秘钥登录
l 配置Master主机本机的免秘钥登录
下面以配置Master本机无密码登录为例进行讲解,用户需参照下面步骤完成Slave1~Slave3三台子节点机器的本机无密码登录;
1)以hadoop用户远程登录Master服务器,在Master服务器上生成公钥和私钥密码对,密钥默认存储在”/home/hadoop/.ssh”目录下,生成公钥和私钥密码对时,无需输入密码,直接回车即可。
#切换到hadoop用户,不能使用root用户生成密钥
[hadoop@Master hadoop]$ su hadoop
[hadoop@Master hadoop]$ cd /home/hadoop/
[hadoop@Master hadoop]$ ssh-keygen -t rsa -P ""
2)将公钥追加到”authorized_keys”文件
[hadoop@Master hadoop]$ cd /home/hadoop/
[hadoop@Master hadoop]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
3)赋予权限
[hadoop@Master hadoop]$ chmod 600 .ssh/authorized_keys
4)验证本机能无密码访问
[hadoop@Master hadoop]$ ssh Master
l 配置从Master到各Slave节点的免秘钥登录
下面以Master无密码登录Slave1为例进行讲解,用户需参照下面步骤完成Master无密码登录Slave2~Slave3。
1)以hadoop用户远程登录Slave1服务器,复制Master服务器的公钥”id_rsa.pub”到Slave1服务器的”/home/hadoop/”目录下。
[hadoop@Slave1hadoop]$ cd /home/hadoop/
[hadoop@Slave1hadoop]$ scp hadoop@Master:/home/hadoop/.ssh/id_rsa.pub /home/hadoop/
2)将Master的公钥(/home/hadoop/id_rsa.pub)追加到Slave1的authorized_keys中。
[hadoop@Slave1hadoop]$ cd /home/hadoop
[hadoop@Slave1hadoop]$ cat id_rsa.pub >> .ssh/authorized_keys
[hadoop@Slave1hadoop]$ rm -r /home/hadoop/id_rsa.pub
3)另外开启一个终端,远程登录Master服务器,在Master服务器测试通过SSH无密码登录Slave1。
[hadoop@Master hadoop]$ ssh Slave1
l 配置从各slave节点到Master节点免秘钥登录
下面以Slave无密码登录Master为例进行讲解,用户需参照下面步骤完成KVMSlave2~KVMSlave3无密码登录Master。
1)以hadoop用户远程登录Master,复制Slave服务器的公钥”id_rsa.pub”到Slave服务器的”/home/hadoop/”目录下。
[hadoop@Masterhadoop]$ scp hadoop@Slave:/home/hadoop/.ssh/id_rsa.pub /home/hadoop
2)将Slave的公钥(/home/hadoop/id_rsa.pub)追加到Master的authorized_keys中。
[hadoop@Masterhadoop]$ cd /home/hadoop
[hadoop@Masterhadoop]$ cat id_rsa.pub >> .ssh/authorized_keys
[hadoop@Masterhadoop]$ rm –r /home/hadoop/id_rsa.pub
3)以hadoop用户远程登录Slave服务器,在Slave服务器测试通过SSH无密码登录Master。
[hadoop@Slave hadoop]$ ssh Master
3、 安装hadoop
1)以hadoop用户远程登录Master服务器,下载hadoop-2.8.1.tar.gz ,并将其拷贝到Master服务器的/home/hadoop/目录下。
2)解压Hadoop源文件
[hadoop@Master~]$ su hadoop
[hadoop@Master~]$ cd /usr
[hadoop@Masterusr]$ sudo tar -zxvf /home/hadoop/hadoop-2.8.1.tar.gz //将文件减压在当前路径
3)重命名hadoop
[hadoop@Masterusr]$ sudo mv hadoop-1.2.1/ hadoop/
4) 设置hadoop文件夹的用户属组和用户组
很关键到一步,便于hadoop用户对该文件夹的文件拥有读写权限,不然后续hadoop启动后,无法在该文件夹创建文件和写入日志信息。
[hadoop@Masterusr]$ sudo chown -R hadoop:hadoop /usr/hadoop
5)删除安装包
[hadoop@Master~]$ rm -rf /home/hadoop/hadoop-2.8.1.tar.gz
#删除"hadoop-2.8.1.tar.gz"安装包
4、配置master Hadoop 环境变量
1)配置环境变量
[hadoop@Master ~]$ sudo vi/etc/profile
#HADOOP
export HADOOP_HOME=/usr/hadoop
exportPATH=$PATH:$HADOOP_HOME/bin
exportHADOOP_HOME_WARN_SUPPRESS=1
使得hadoop命令在当前终端立即生效;
[hadoop@Master ~] $source /etc/profile
2)配置hadoop-env.sh
hadoop环境是基于JVM虚拟机环境的,故需在hadoop-env.sh配置文件中指定JDK环境。修改/usr/hadoop/etc/hadoop/hadoop-env.sh文件,添加如下JDK配置信息。
[hadoop@Master ~] cd/usr/hadoop/etc/hadoop
[hadoop@Master hadoop] vi hadoop-env.sh
exportJAVA_HOME=/usr/java/jdk1.7.0_65
3)配置core-site.xml
修改Hadoop核心配置文件/usr/hadoop/etc/hadoop/core-site.xml,通过fs.default.name指定 NameNode 的 IP 地址和端口号,通过hadoop.tmp.dir指定hadoop数据存储的临时文件夹。
[hadoop@Master hadoop] vi core-site.xml
fs.default.name
hdfs://Master:9000
hadoop.tmp.dir
file: /usr/hadoop/tmp
特别注意:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/ hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。
4)配置hdfs-site.xml
修改HDFS核心配置文件/usr/hadoop/etc/hadoop/hdfs-site.xml,通过dfs.replication指定HDFS的备份因子为3,通过dfs.name.dir指定namenode节点的文件存储目录,通过dfs.data.dir指定datanode节点的文件存储目录。
[hadoop@Master hadoop] vi hdfs-site.xml
dfs.replication
3
dfs.name.dir
file: /usr/hadoop/hdfs/name
dfs.data.dir
file: /usr/hadoop/hdfs/data
dfs.http.address
master:50070
5)配置mapred-site.xml
复制MapReduce核心配置文件 /usr/hadoop/etc/hadoop/mapred-site.xml.template
修改为/usr/hadoop/etc/hadoop/mapred-site.xml,通过mapred.job.tracker属性指定JobTracker的地址和端口。
[hadoop@Master hadoop] vi mapred-site.xml
mapred.job.tracker
http://Master:9001
mapreduce.framework.name
yarn
6)配置yarn-site.xml文件
修改yarn资源管理/usr/hadoop/etc/hadoop/yarn-site.xml 增加以下配置项
[hadoop@Master hadoop] vi yarn-site.xml
yarn.resourcemanager.hostname
master
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.address
master:8032
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.resource-tracker.address
master:8031
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8088
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
7)配置slaves文件(Master主机特有)
修改/usr/hadoop/etc/hadoop/slaves文件,该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名,如下所示。
[hadoop@Master hadoop] viconf/slaves
Slave1
Slave2
Slave3
5、 配置Slave环境
下面以配置Slave1的hadoop为例进行演示,用户需参照以下步骤完成其他Slave服务器的配置。
1)以hadoop用户远程登录Slave1服务器,拷贝-Master主机的hadoop文件夹到本地/usr/目录下;
[hadoop@Slave1 ~]$ cd /usr/
[hadoop@Slave1 usr]$ sudo scp-r hadoop@-Master:/usr/hadoop/ .
[hadoop@Slave1 usr]$ sudochown -R hadoop:hadoop hadoop/
#slaves文件内容删除,或者直接删除slaves
[hadoop@Slave1 usr]$ rm/usr/hadoop/conf/slaves
2)配置环境变量
[hadoop@Slave1 ~]$ sudo vi/etc/profile
#HADOOP
export HADOOP_HOME=/usr/hadoop
exportPATH=$PATH:$HADOOP_HOME/bin
exportHADOOP_HOME_WARN_SUPPRESS=1
使得hadoop命令在当前终端立即生效;
[hadoop@Slave1 ~]$ source/etc/profile
6、 格式化HDFS文件系统
格式化HDFS文件系统需要在namenode节点上通过hadoop用户执行,而且只需要执行一次,下次启动时不需要格式化,直接启动HDFS文件管理系统和MapReduce服务即可。
[hadoop@Master ~]$hadoop namenode -format
7、 启动HDFS及yarn
注意:在启动前需要检查各主机的防火墙是否开启的,如果开启的需要在root用户下用service iptables stop 命令关闭防火墙,否则可能导致各节点之间通信异常。
进入/usr/Hadoop/sbin/目录执行启动脚本start_all.sh
[hadoop@Master sbin]$ ./start_all.sh
8、 查看是否启动成功
用jps查看进程,如有以下进程说明启动
l Master主机
NameNode
SecondaryNameNode
Jps
ResourceManager
l Slaver主机
DataNode
NodeManager
9、 查看页面
l 查看hdfs管理页面
l 查看yarn管理页面
10、 测试
1、 hadoop fs –mkdir /test //创建目录
2、 Hadoop fs –put ./ README.txt /text 将README.txt 上传到test目录下
3、 用hadoop 自带的mr例子程序进行测试
hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar wordcount/test/README.txt /test/README
4、用查看hadoop fs-ls /test/README