第1步:准备三台虚拟机,一台作为master,两台作为slave。
第2步:三台虚 拟机必须能访问外网,并且能相互ping通。
第3步:查看三台主机的名字,为后续使用ssh能互相连接。分别为master,slave1,slave2
分别查看三台虚拟机。
查看命令 hostname
修改命令vi etc/sysconfig/network
使用source etc/sysconfig/network刷新,若不行则reboot。
第4步: 安装ssh服务,使三台虚拟机不需要密码就能相互访问。安装命令yum -y openssh-server 安装服务,安装客户端 yum -y openssh-clients。
第5步: 如果能让其他服务器访问本服务器必须关闭防火墙 命令 service iptables stop,禁止防火墙开机启动chkconfig iptables off,
第6步: 配置相关域名,通过域名,不需要通过ip地址就能访问。命令 vi etc/hosts,IP地址分别为三台服务主机的地址。
192.168.174.101 master
192.168.174.102 slave1
192.168.174.103 slave2
第7步:执行ssh-keygen生成公钥和秘钥 使三台服务通过公钥和秘钥来相互连接。
第8步:通过ssh-copy-id master或者IP地址 /root/.ssh/id_rsa.pub 把公钥发给master
第9步:master使用命令cat /root/.ssh/authorized_keys查看收到的公钥
第10步:master发送公钥给slave1和slave2 命令 scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/
第11步: 分别执行ssh命令,查看是否能相互登录。
ssh master exit
ssh slave1 exit
ssh slave2 exit
第12步:在master中建立一个文件夹/opt/SoftWare/ 命令mkdir /opt/SoftWare/
第13步:进入/opt/SoftWare/目录中 并安装 yum -y install lrzsz
lrzsz工具是可以上传本地的文件
命令为 yum -y install lrzsz
上传命令 rz
也可以同个wget 路径 下载
第14步:上传jdk到/opt/SoftWare/中
命令rz
第15步:解压jdk命令为
tar -xvf jdk名称
第16步:配置环境变量
命令 vi /etc/profile
添加一下内容
export JAVA_HOME=/opt/SoftWare/jdk1.8.0_151 #这是jdk的安装路径
export JRE_HOME=$JAVA_HOME/jre 如果失败则 export JRE_HOME=/opt/SoftWare/jdk1.8.0_151/jre #java运行环境配置
export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #javac的编译器的环境变量,系统自动去查找jar包
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin #当系统运行javac或者java等然后会从path路径中查找。
第17步: 刷新环境变量 source /etc/profile 并查看是否配置成功 命令 java -version,或者javac,java
第18步: 下载hadoophttp://hadoop.apache.org/releases.html。
第19步: 进入/opt/SoftWare/目录中 上传hadoop到文件夹中
命令 :cd /opt/SoftWare/
命令:rz
第20步: 解压hadoop
命令 tar -xvf hadoop压缩包
第21步: 配置hadoop环境变量
命令 vi /etc/profile
添加内容
export HADOOP_HOME=/opt/SoftWare/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
第22步:刷新环境变量 source /etc/profile 并查看是否配置成功 命令 java -version,或者javac,java
第23步: 进入/opt/SoftWare/hadoop-2.7.3 中 创建 tmp,logs,hdfs/namenode,hdfs/datanode,hdfs
命令 mkdir tmp,mkdir logs, mkdir hdfs,mkdir hdfs/namenode, mkdir hdfs/datanode,
第24步: 进入/opt/SoftWare/hadoop-2.7.3/etc/hadoop中 这是hadoop中所有的配置文件
24.1 修改配置文件中hadoop-env.sh 修改环境变量
命令:vi hadoop-env.sh
修改第 25 行的 ${JAVA_HOME} 为自己的 jdk 安装目录
(/opt/SoftWare/jdk1.8.0_151)
24.2 修改配置文件yarn-env.sh
修改第 23 行,解注释(export JAVA_HOME=/home/y/libexec/jdk1.6.0/),修改路径为自己的 jdk 安装目录
(/opt/SoftWare/jdk1.8.0_151 )
24.3修改配置文件slaves
修改 localhost 为 slave1 和 slave2 目的是为slaves中有两个slave1和slave2
24.4 将mapreduce-site.xml.template 从命名为mapreduce-site.xml
命令为mv mapred-site.xml.template mapred-site.xml 重命名 mapred-site.xml.template
24.5 修改hadoop核心配置文件core-site.xml
命令 vi etc/hadoop/core-site.xml
修改内容为
<property>
<name>fs.defaultFS</name>
<!--定义HadoopMaster的URI和端口-->
<value>hdfs://master:9000</value>
<!-- fs.defaultFS- 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--hadoop 中的临时存储目录,tmp 文件夹的路径 --> <!—hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中-->
<value>file:/opt/SoftWare/hadoop-2.7.3/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<!--用作序列化文件处理时读写buffer的大小-->
<value>131702</value>
</property>
24.5 修改hadoop中分布式文件系统配置文件hdfs-site.xml:
命令 vi etc/hadoop/hdfs-site.xml
<property>
<!-- namenode 节点数据存储目录 -->
<name>dfs.namenode.name.dir</name>
<value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!-- datanode 数据存储目录 -->
<value>file:/opt/SoftWare/hadoop-2.7.3/hdfs/datanode</value>
</property>
<property>
<!-- 指定DataNode存储block的副本数量,不大于DataNode的个数就行 -->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<!-- 指定master的http地址 -->
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<!-- 指定master的https地址 -->
<name>dfs.namenode.secondary.https-address</name>
<value>master:50091</value>
</property>
<property>
<!-- 必须设置为true,否则就不能通过web访问hdfs上的文件信息 -->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
24.5 修改hadoop中集群管理和调度配置文件yarn-site.xml
命令 vi etc/hadoop/yarn-site.xml
<property>
<!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<!--ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。-->
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<!--ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。-->
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<!--ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。-->
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<!--ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。-->
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<!--用户可通过该地址在浏览器中查看集群各类信息。-->
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<!--NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。另外,该参数的默认值是8192MB,因此,这个值通过一 定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。-->
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
24.5 修改hadoop中mapreduce配置文件/mapred-site.xml
命令 vi etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name> #运行在yarn框架上
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name> <!---- 指定mr框架jobhistory的内部通讯地址。目前还不知道是做什么的 -->
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name> <!---- 指定mr框架web查看的地址 -->
<value>master:19888</value>
</property>
第25步:将/opt/SoftWare/中的文件复制一份到slave1和slave2
命令:scp -r /opt/SoftWare/ root@slave1:/opt/
scp -r /opt/SoftWare/ root@slave2:/opt/
第26步:把 /etc/profile 文件拷贝到 slave1 和 slave2 的 /etc 下
命令 scp /etc/profile/ root@slave1:/etc/
scp /etc/profile/ root@slave2:/etc/
第27步:在slave1和slave2中验证文件是否存在和java程序是否能运行
第28步:锁定时间同步
安装时间同步软件 ntpdate:yum -y install ntp ntpdate
和网络时间进行同步:ntpdate cn.pool.ntp.org
把时间写入硬件进行锁定:hwclock --systohc
第29步:进入 hadoop-2.7.3/bin 目录,使用 ./hdfs namenode -format 进行格式化(master操作)
命令:cd bin
./hdfs namenode -format
不允许多次格式化,会导致集群无法启动
如果出错:
1. 修改配置文件
2. 删除 三个 上的 hdfs/name 和 hdfs/data 文件夹
3. 把修改的内容发送到 slave1 和 salve2 下
时刻保持 3 个虚拟机的配置文件是一致的
4. 重新格式化
第30步:进入 hadoop-2.7.3/sbin 目录,使用 ./start-dfs.sh 启动 hdfs 服务
命令为 cd sbin
./start-dfs.sh
第31步:(master,slave1,slave2)分别执行jps查看进程,登录http://master(IP地址):50070查看活动节点
第32步:master进入 hadoop-2.7.3/sbin 目录,使用 ./start-yarn.sh 启动 yarn 服务
第33步:(master,slave1,slave2)分别执行jps查看进程,登录http://master(IP地址):8088查看resourcemanage情况
第34步:27.进入 hadoop-2.7.3/sbin 目录,使用 ./stop-dfs.sh 关闭 hdfs 服务
进入 hadoop-2.7.3/sbin 目录,使用 ./stop-yarn.sh 关闭 yarn 服务
切记:关虚拟机前先关闭 hadoop 集群,不然可能会导致集群的崩溃
备注:可以使用./start-all.sh打开所有的服务也可以使用./来停止所有的服务