本文用到:
Windows系统:Windows 10 家庭版
平台:VMware ® Workstation 15 Pro
连接工具:Xshell 6
Linux系统:Linux Centos 7 64位
杂项:【记录路径:Windows系统txt文本文档】
解释:
Ⅰ:文中提到的编辑为vim命令,vim为彩色代码,对用户更友好。
vim命令需要安装,安装命令为:yum install -y vim 【前提:能联网】
vi也是编辑命令,为Linux系统自带编辑命令,没有彩色代码,易导致看错行。
笔者推荐vim
Ⅱ:多使用Tab键提示,可以确保你的输入是否正确,可以检查该目录下是否有你需要的文件以及命令。
前期准备:
Linux环境:
配置网络:
命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33(ens33是网卡名称,无需统一)
IP内容:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=9dbdc0c5-32f7-****-****-21c56a201450 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.1.4 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=114.114.114.114红色标记为着重注意,配完IP后保存:键盘ESC键,冒号:加上wq回车。
克隆两台,分别更改IP,避免IP冲突
所有机器,配完IP重启网卡:service network restart
输入:ip a 或 ifconfig 查看IP
ping一下baidu.com能ping通即为打通网络成功。
Xshell 6 安装与配置:点击跳转下载Xshell6
除安装位置外,其他步骤直接下一步。
安装完成后打开Xshell 6
快捷键Alt+N为新建会话。
连接栏:
名称:你要的主机名字(master,slave1,slave2)
协议普遍无需调整,需要就调整
主机:三台机器的IP
连接栏的下方的用户身份验证:
方法:无需更改
用户名,安装时候的用户名,一般为root
密码:为你设置的root用户密码
配置完成,双击打开,接受并允许操作。
Xshell 6 小技巧:
如果小键盘,输入数字乱码蹦字母,打开Xshell的会话管理器→右键你的会话名称→属性→VT模式→初始数字键盘模式→设置为普通→确定→重启该窗口
更改hostname名称:
hostnamectl set-hostname 主机名(一台master,两台slave分别为slave1,slave2)
科普小知识:
临时修改主机名:hostname 临时主机名
永久修改主机名:hostnamectl set-hostname永久主机名 是对/etc/hostname文件的内容进行修改
回车后输入bash命令更新主机名或输入hostname查看主机名
配置hosts文件:
vim /etc/hosts添加自己的三台机器IP:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.38.137 master 192.168.38.138 slave1 192.168.38.139 slave2
发送给其他两台主机:
scp /etc/hosts root@slave1:/etc/ scp /etc/hosts root@slave2:/etc/提示输入yes就输入yes,再输入密码发送hosts文件
解释:scp /etc/hosts root@slave1:/etc/
发送本机(一般为master)主机的etc下的hosts文件到slave1的root用户名下的/etc文件夹下。
配置免密后无需加root@主机名称,直接输入主机名即可,例:
scp /etc/profile slave1:/etc/
配置免密:点击查看→SSH三台主机免密登录配置
开始搭建Hadoop分布式文件系统:
上传jdk、hadoop、zookeeper压缩包
新建tar包文件夹和apps文件夹:
# tar文件夹为存放tar包,apps为存放解压后的文件。
我在/usr下建立的两个文件夹:
进入/usr/文件夹:cd /usr
新建文件夹:mkdir apps tar#直接新建两个文件夹(apps、tar)【中间有空格间隔】
进入tar文件夹上传三个软件的压缩包(jdk、zookeeper、Hadoop):rz回车找到文件即可上传。
如果提示未找到命令或报错请安装上传命令:yum install -y lrzsz
===这里推荐使用Xftp,不需要安装rz命令===
上传完成后输入ls查看:
hadoop-2.7.4.tar.gz
jdk-8u161-linux-x64.tar.gz
zookeeper-3.4.10.tar.gz
去apps文件夹新建jdk、zookeeper、Hadoop的目录以及子目录:
cd /usr/apps/mkdir java hadoop zookeeper【中间有空格间隔】
zookeeper需要两个文件夹为data、log,新建:
进入zookeeper文件夹新建:
mkdir data log创建完成后进入data文件夹:
cd data查看路径记录下来:pwd查看路径,将路径在txt文档中保存,方便记忆,节省时间。
jdk的解压目录,Hadoop的解压目录,zookeeper的解压目录亦是同理。
Hadoop需要有存放数据点tmp
进入Hadoop目录新建tmp文件夹,查看路径,保存路径在txt文档(步骤繁琐不再细讲)
解压:tar -zxvf
三个文件全部解压到指定目录:
进入到tar文件夹:
cd /usr/tar解压jdk到指定文件夹:
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/apps/java/【我jdk建的目录为java】
解释:
zxvf为四个参数,笔者未深究,有兴趣可以去查查。
-C是指定目录,如未指定(tar -zxvf jdk-8u161-linux-x64.tar.gz即为解压到当前文件夹)
解压zookeeper到指定文件夹:
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/apps/zookeeper/解压Hadoop到指定文件夹:
tar -zxvf hadoop-2.7.4.tar.gz -C /usr/apps/hadoop/
解压后记录解压目录:
进入解压目录后pwd查看路径:
[root@master jdk1.8.0_161]# cd /usr/apps/java/jdk1.8.0_161/ [root@master jdk1.8.0_161]# pwd /usr/apps/java/jdk1.8.0_161记录路径,zookeeper、Hadoop同理
配置环境变量:vim /etc/profile
【到了发挥vim彩色代码的用途时间了】
在文档底部添加配置文件信息:
【shift+G为快速到达文档底部。】
i键插入:
#JAVA_HOME export JAVA_HOME=/usr/apps/java/jdk1.8.0_161 export PATH=$PATH:$JAVA_HOME/bin #ZOOKEEPER_HOME export ZOOKEEPER_HOME=/usr/apps/zookeeper/zookeeper-3.4.10 export PATH=$PATH:$ZOOKEEPER_HOME/bin #HADOOP_HOME export HADOOP_HOME=/usr/apps/hadoop/hadoop-2.7.4 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin标红需要注意路径,看是否为你的路径,其他无需更改。
配置完成后wq保存,source /etc/profile 初始化配置文件后输入java -version查看Jdk是否安装完成。
【以上环境变量为三个软件的环境变量一遍过类型。】
发送配置文件:
scp /etc/profile slave1:/etc/ scp /etc/profile slave2:/etc/
配置zookeeper:
配置zoo.cfg文件:
进入zookeeper解压目录下的conf文件夹
cd /usr/apps/zookeeper/zookeeper-3.4.10/conf/ls查看未发现zoo.cfg只有zoo_sample.cfg,这是个模板,复制一份:cp命令【copy复制】:
cp zoo_sample.cfg zoo.cfg编辑zoo.cfg:vim zoo.cfg:
查看有无以下内容:
dataDir=/usr/apps/zookeeper/data dataLogDir=/usr/apps/zookeeper/log【标红为自己的路径,上面有提到让记录】
最后加:
server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888进入到zookeeper的data目录下:
cd /usr/apps/zookeeper/data/创建myid文件:
vim myid输入1/2/3【/为或者】,wq保存退出
配置Hadoop:
进入Hadoop的配置文件目录:
cd /usr/apps/hadoop/hadoop-2.7.4/etc/hadoop/复制生成mapred-site.xml文件:
cp mapred-site.xml.template mapred-site.xml
修改文件:
vim hadoop-env.sh
25行的java_home后面删除替换成自己的Jdk路径:
# set JAVA_HOME in this file, so that it is correctly defined on # remote nodes. # The java implementation to use. export JAVA_HOME=/usr/apps/java/jdk1.8.0_161
vim yarn-env.sh
23行的export前面有#注释,删除掉,将后面的路径该为自己的jdk路径。
export JAVA_HOME=/usr/apps/java/jdk1.8.0_161 if [ "$JAVA_HOME" != "" ]; then #echo "run java in $JAVA_HOME" JAVA_HOME=$JAVA_HOME fi if [ "$JAVA_HOME" = "" ]; then echo "Error: JAVA_HOME is not set." exit 1 fi
core-site.xml
<configuration> <!-- 指定HDFS中NameNode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储目录--> <property> <name>hadoop.tmp.dir</name> <value>/usr/apps/hadoop/tmp</value> <description>Abasefor other temporary directories.</description> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
yarn-site.xml
<configuration> <!– Site specific YARN configuration properties –> <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:18141</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:18088</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
slaves
slave1 slave2
配置完毕
分发所有文件:
scp -r /etc/profile slave1:/etc/
scp -r /etc/profile slave1:/etc/
发送后所有机器要重新初始化profile文档
所有机器:source /etc/profile
scp -r /usr/apps slave1:/usr/
scp -r /usr/apps slave2:/usr/
修改zookeeper下的data文件夹下myid:
slave1改为2
slave2改为3
特别提醒:关闭防火墙
启动zookeeper:
三台机器:
zkServer.sh start
会有leader和follow两种状态,谁先谁后都无所谓
启动Hadoop:
格式化主节点(master):
hdfs namenode -format
【启动过就删除两个slave节点下的hadoop的tmp文件夹下的所有东西,没有启动过不用删除。】
启动Hadoop:start-all.sh
jps查看命令
[root@master hadoop]# jps 5236 Jps 4838 SecondaryNameNode 4410 QuorumPeerMain 4986 ResourceManager 4653 NameNode =====分割线===== [root@slave1 ~]# jps 3769 Jps 3803 NodeManager 3693 DataNode 3614 QuorumPeerMain =====分割线===== [root@slave2 ~]# jps 3696 Jps 3478 QuorumPeerMain 3563 DataNode 3663 NodeManager
浏览器打开你的ip+:50070和你的IP+:18088
查看结果。
一般启动hadoop为start-dfs.sh和start-yarn.sh
start-all.sh已经过时了。
教程完毕
文章有(2)条网友点评
因模板更新,可能导致代码未高亮显示,近期正在修复。
有些链接可能已经失效会跳转到404页面,如有需要请将地址栏里的/blog删除
例如:www.adminlog.xyz/blog/Xshell
删除/blog为:www.adminlog.xyz/Xshell