一.准备装备
1.centOS7镜像
2.jdk1.8
3.hadoop2.7.4
二.配置虚拟机环境 (使用root)
1.给虚拟机添加hadoop用户
useradd -m hadoop -G root -s /bin/bash #创建用户
passwd #设置密码
2.修改虚拟机网络配置,在虚拟机中编辑----编辑虚拟机网络---设置vmware8NAT模式---ip地址与本机的ip在同一网段
备注:克隆虚拟机之后
3.修改当前虚拟机ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
插入如下内容:
BOOTPROTO=none ONBOOT=yes IPADDR=192.168.189.150# 备注:修改此处ip地址为自己的ip PREFIX=24 GATEWAY=192.168.189.2#自己的网关 DNS1=202.103.0.20
(修改完ip,按esc键,执行:wq 回车保存退出,执行systemctl restart network命令,上二是默认的网关,具体子网段根据你的配置)
重新加载网络配置,修改ip之后需要重启网络,
执行命令:
systemctl restart network
4.设置windows系统中ip地址
5.修改hostname
vi /etc/hostname
删除原有内容添加master
6.修改hosts
vi /etc/hosts
添加如下内容
192.168.189.150 主机1名称 192.168.189.151 主机2名称
!!!!保证两台机器可以ping通.
备注:后期不能用root用户登录,使用hadoop用户
在xshell中,新建会话属性---用户身份登录----固定登录用户hadoop
三.配置ssh无密码登陆 (使用hadoop)
备注:首先,ssh 主机名 命令,登录提示yes/no?,选择yes,输入密码hadoop
登录进去之后,ls -a 命令,列出hadoop用户所有文件,包括 .ssh文件,
执行以下命令:
1.cd .ssh 2.ssh-keygen -t rsa #遇到提示一路回车就行,共三次回车 3.|| #会看到 id_rsa id_rsa.pub 两文件前为私钥,后为公钥 4.cp id_rsa.pub authorized_keys #把公钥复制成一个新的文件(名字不可变) 5.chmod 600 authorized_keys #修改文件权限,重要不要忽略 6.将hadoop-master的公钥传送到所有的slave上,实现hadoop-master无密码登陆到所有slave上 scp authorized_keys hadoop@slave:~/.ssh/ 7.在每个slave的服务上输入 cd .ssh chmod 600 authorized_keys
四.安装jdk,首先解压jdk
tar -zxvf jdk-8u144-linux-x64.tar.gz,
解压之后
执行下面操作:
安装jdk
1.jdk环境变量
vi /home/hadoop/.bashrc
添加:
export JAVA_HOME=/home/hadoop/jdk
export PATH=$PATH:$JAVA_HOME/bin
2.重新加载配置文件
source /home/hadoop/.bashrc
.安装hadoop
1.hadoop环境变量
vi /home/hadoop/.bashrc
输入:
# Hadoop Environment Variables export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
配置hadoop里的各种文件:
cd 主机名/etc/hadoop
1.core-site.xml <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/hadoop/tmp</value> </property>
2.hdfs-site.xml <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hadoop/tmp/dfs/data</value> </property>
3.mapred-site.xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property>
4.yarn-site.xml <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
5.slaves 主机1 主机2 。。。
2.关闭防火墙 (使用root)
1.systemctl stop firewalld.service #停止firewall 2.systemctl disable firewalld.service #禁止firewall开机启动 3.firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running
3.启动hadoop集群 (在master用户上启动,使用hadoop用户)
hdfs namenode -format #第一次启动要执行格式化,之后启动不用执行这个 start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh start historyserver
4.测试hadoop
1.先在集群上创建hello目录 hdfs dfs -mkdir /hello 2.讲写好的文件上传到创建好的hello目录 hdfs dfs -put /home/hadoop/hello.txt /hello 3.执行hadoop自带的案例,统计dfs开头的信息 hadoop -jar hadoop-mapreduce-examples-2.7.4.jar wordcount /hello/hello.txt /hello/output 4.查看执行结果,wordcount可以分辨出使用空格隔开的单词. hdfs dfs -cat /hello/output/*
5.关闭hadoop集群
1.stop-dfs.sh 2.stop-yarn.sh 3.mr-jobhistory-daemon.sh stop historyserver
至此,hadoop的环境安装和测试已经结束,如果有问题,欢迎留言讨论,看到第一时间回复。