Hadoop环境搭建
1.准备装备
1.centOS7镜像
2.jdk1.8
3.hadoop2.7.4
2.配置虚拟机环境 (使用root)
给虚拟机添加hadoop用户
#useradd -m hadoop -G root -s /bin/bash 创建用户
#passwd 设置密码
3. 修改虚拟机网络配置,在虚拟机中编辑----编辑虚拟机网络---设置vmware8NAT模式---ip地 址与本机的ip在同一网,如下图所示:
4.克隆虚拟机
5.克隆完虚拟机,需要修改当前虚拟机ip:执行以下命令:
#vi /etc/sysconfig/network-scripts/ifcfg-ens33,修改为同一网段的任意地址方可。修改完按ESC键,输入(:wq)保存。
6.修改完ip需要重启网络,可以用xshell连接虚拟机,打开界面如下:
7.后期要用hadoop用户登录,可以如下图所示配置锁定用hadoop用户登录
6.使用root用户,修改主机名,执行vi /etc/hostname命令:
7.使用root用户,修改hosts,直接执行 vi /etc/hosts命令,
每台虚拟机,都做同样的操作,并重启虚拟机reboot,重启网络配置:systemctl restart network
注意:vi /etc/hosts命令,添加主机名与ip映射时,ip在前,主机名在后
如图所示:
8.波浪线为当前用户模式的路径,在当前用户模式下安装的软件都不会影响其他用户,如图
9.使用ssh免密码登录,第一步骤,查看当前用户的所有目录及文件,没有(.ssh目录):
rpm -qa | grep ssh 查看是否启动安装ssh
表示安装了
没有安装请执行:yum -y install openssl openssh-server openssh-clients
10.使用ssh master命令登录自己的master,每个提示输入yes即可
,会提示输入自己的密码,输入密码即可,如图:
11.登录成功后,exit退出,如图:
12.进入(.ssh目录)后,
cd .ssh:转入到.ssh目录下
ssh-****** -t rsa #遇到提示一路回车就行,
ll #会看到 id_rsa id_rsa.pub 两文件前为私钥,后为公钥
cat id_rsa.pub >> authorized_keys #把公钥内容追加到authorized_keys文件中
chmod 600 authorized_keys #修改文件权限,重要不要忽略
执行如图所示:
13.执行以下命令,打开私钥密码,如图:
14.将公钥文件复制到指定的文件夹。更改权限,重新使用ssh master登录用户,不需要密码了,如图:
15.配置slave虚拟机,将master的authorized_keys 传给slave,命令:
在.ssh目录下执行:scp authorized_keys [email protected]:~/.ssh/
16.使用xftp传jdk到/home/hadoop用户下,解压jdk执行命令,如下所示:
分别是四个参数
x : 从 tar 包中把文件提取出来
z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压
v : 显示详细信息
f:指定文件是被tar.gzip压缩过的
17.配置jdk的环境变量,首先打开.bashrc文件,添加环境变量,如下图所示:
18.以下为配置jdk环境变量,配置jdk的bin路径,如图所示:
19.测试jdk,如图所示:
20.jdk测试成功后,解压hadoop,如图所示:
21.移动解压后的hadoop到一个新的文件夹,如图所示:
移动到当前目录下命令:mv jdk1.8.0_144/ jdk
22.配置hadoop环境变量,如下图所示:
23.环境变量配置成功后,:wq保存后,执行source .bashrc 之后输入命令hadoop,如下图所示说明hadoop配置成功
24.进入hadoop文件夹下的etc下的hadoop文件夹,查看显示所有文件,如下图所示:
25.找到如下五个配置文件,
如下图所示:
26.打开文件core-site.xml,如下图所示:
2.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>//tmp文件的路径
</property>
27.在<configuration>元素中添加配置项,如下图所示:
28.打开hdfs-site.xml,配置如下图所示:
3.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>
29.复制mapred-site.xml.template为mapred-site.xml,如图所示:
30.配置yarn-site.xml同上
31.配置slaves,将localhost改名为:slave,配置所有奴隶机器的主机名
32. (使用root用户)
1.systemctl stop firewalld.service #停止firewall
2.systemctl disable firewalld.service #禁止firewall开机启动
3.firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running
备注:hadoop环境安装配置完毕
33. 启动hadoop集群 (hadoop用户)
hdfs namenode -format #第一次启动要执行格式化,之后启动不用执行这个
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver:查看历史执行任务
使用jps命令,查看master及slave的管理者
34. 测试hadoop
1.先在集群上创建hello目录
hdfs dfs -mkdir /hello
然后touch hello.txt,在编辑vi hello.txt
2.将写好的文件上传到创建好的hello目录
hdfs dfs -put /home/hadoop/hello.txt /hello
3.执行hadoop自带的案例,统计dfs开头的信息
在hadoop用户下,hadoop/share/hadoop/mapreduce/ hadoop-mapreduce-examples-2.7.4.jar,该jar包中拥有一些小的程序,可以用它去统计hello.txt文件中的单词个数
hadoop
jar
hadoop-mapreduce-examples-2.7.4.jar
wordcount
/hello/hello.txt
/hello/output
4.查看执行结果,wordcount可以分辨出使用空格隔开的单词.
hdfs dfs -cat /hello/output/*
35.关闭hadoop集群
1.stop-dfs.sh
2.stop-yarn.sh
3.mr-jobhistory-daemon.sh stop historyserver
36.master:50070登录hdfs
master:8088登录mapreduce
37.hdfs dfsadmin -safemode leave:该命令可以使Name Node离开安全模式
38.datanode无法启动解决办法:原因:可能datanode上的文件损坏,或者master与slave
元数据不同步,需按以下步骤执行:
1.在master机器上,将hadoop目录下的tmp目录删除 rm -rf tmp,slave机器同时删除 tmp
2 .执行格式化命令:hdfs namenode -format
3.重新启动:start-dfs.sh
4.启动mapreduce:start-yarn.sh
5. mr-jobhistory-daemon.sh start historyserver
6.jps查看启动的进行
7.在slave机器上执行jps观察datanode进程是否启动