前期准备工作:
1. 安装虚拟机 : VMware 或者 VirtualBox
2. 下载centos7
3. 安装linux系统 【安装失败,解决办法 : 重启电脑 进入电脑BISO界面 修改CPU下的第3个 】
4. 安装linux系统时,注意打开网络配置
1.1步骤一 网络配置:
配置静态ip :在虚拟机终端
进入超级用户 : su 密码
切换到目录下 :cd /etc/sysconfig/network-scripts
打开网管配置文件 : vim ifcfg-ens33
a) BOOTPROTO="static" # 使用静态IP地址,默认为dhcp
b) IPADDR="192.168.***.***" # 设置的静态IP地址 【与网关ip是一样的,最后一位不是0、2、255】
c) NETMASK="255.255.255.0" # 子网掩码
d) GATEWAY="" # 网关地址
e) DNS1="" # DNS服务器 【输入网关地址】
【输入 i 写入 ,按Esc退出写入模式 再按shift + : 输入wq 保存退出;查看网关地址的方法 : 查看虚拟机中的虚拟网络编辑器 ,找NAT模式,复制网关lp】
重合服务 :service network restart
配置hostname的方法为 hostnamectl set-hostname 主机名
配置IP地址映射为 : vim /etc/hosts
systemctl restart network.service
1.2步骤二 SSH免密登陆配置
配置ssh免密登录 : 在虚拟机终端
安装ssh : rpm -qa|grep ssh
切换到目录下 :vim /etc/ssh/sshd_config
a) 修改原始文件内容的43内容去掉注释#(#PubkeyAuthentication yes)
b) 在43行上添加一条:RSAAuthentication yes
c) 同理在其他两台虚拟机上也配置文件
d) 重启sshd服务 : systemctl restart sshd
【systemctl restart sshd.servic 是centos6的命令,systemctl restart sshd.servic 是centos7的命令。】
切换到普通用户:exit
a) 切换到 : cd ~
b) 生成公钥和私钥 : ssh-keygen
c) 切换到ssh目录 : cd .ssh
d) 复制公钥 : cat id_rsa.pub >> authorized_keys
e) 修改密钥文件相关权限 : chmod 0600 authorized_keys
f) 共享公钥 : ssh-copy-id -i id_rsa.pub 用户名@第二台虚拟机的hostnam
1.3步骤三 安装java环境
切换到超级用户 : su 密码
查看Java的版本 : java –version
使用命令安装jdk : rpm –qa|grep jdk
卸载java的旧版本(jdk1.8.0以及jdk1.7.0) : yum -y remove java-1.8.0*
使用xftp软件连接到虚拟机中,创建myfile文件夹并上传安装包。
a) 切换到根目录 : cd /usr
b) 创建java目录 : mkdir java
c) 切换到目录 : cd java
d) 解压安装包 :tar -zxvf /home/user/myfile/jdk 【安tab键 补全jdk的版本】
配置java的环境
a) 打开配置变量文件 : vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
b) 重新加载配置 : source /etc/profile
c) 打印PATH : echo $PATH
d) 查看java的版本 : java –version
1.4步骤四 安装hadoop环境
切换到超级用户 : su 密码
切换到目录下 : cd /usr/local
解压安装包 :tar -zxvf /home/user/myfile/hadoop 【安tab 键 补全hadoop版本】
切换到目录 : cd /usr/local/hadoop-2.9.2
cd etc/Hadoop
创建新文件 : vim /etc/profile.d/hadoop.sh
设置配置hadoop.sh文件 :
export HADOOP_HOME=/usr/local/hadoop-2.9.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
重新加载配置文件 : source /etc/profile.d/hadoop.sh
查看系统变量 :echo $PATH
设置配置文件的权限 :chown -R user /usr/local/hadoop-2.9.2 【必须3台电脑都设置】
1.5步骤五 配置hadoop系统信息
切换到目录 : cd /usr/local/hadoop-2.9.2
cd etc/Hadoop
配置 hadoop-env.sh 文件 :vim hadoop-env.sh
a) 第25行修改为 : export JAVA_HOME=/usr/java/jdk版本
b) 第6行添加为 :export HADOOP_SSH_OPTS='-o StrictHostKeyChecking=no'
c) 第113行 修改为 : export HADOOP_PID_DIR=${HADOOP_HOME}/pids
配置 mapred-env.sh 文件 : vim mapred-env.sh
a) 第16行修改为 : export JAVA_HOME=/usr/java/jdk版本
b) 第28行修改为 : export HADOOP_MAPRED_PID_DIR= ${HADOOP_HOME}/pids
配置 yarn-env.sh 文件 :vim yarn-env.sh
a) 第23行修改为 : export JAVA_HOME=/usr/java/jdk版本
b) 最后一行 添加为 : export YARN_PID_DIR=${HADOOP_HOME}/pids
配置 core-site.xml 文件 : vim core-site.xml
在<configuration></configuration>中间添加以下内容 : 【其中需要注意 : 中间的ip 是linux系统的ip】
<property>
<name>fs.defaultFS</name>
<value>hdfs:自己设置的ip:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.9.2/hdfsdata</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
配置 mapred-site.xml 文件 :因系统没有这个文件,需要复制。
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
在<configuration></configuration>中间添加以下内容 :
<property>
<name>mapreduce.framework.name</name>
<value>yuan</value>
</property>
配置 yarn-site.xml 文件 : vim yarn-site.xml
在<configuration></configuration>中间添加以下内容 :
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanger.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置 slaves 文件 : vim slaves
先删除原有的localhost,依次输入从节点的主机名,回车时不要有空格。
同步配置文件
同步 hadoop.sh 文件 : 【切换到超级用户下】
scp /etc/profile.d/hadoop.sh root@从节点:/etc/profile.d/
ls -all ~/.ssh
cat ~/.ssh/known_hosts
同步 hadoop 配置文件 : 【切换到普通用户下】
scp -r /usr/local/hadoop-2.9.2/etc/hadoop/* user@从节点:/usr/local/hadoop-2.9.2/etc/hadoop/
1.6步骤六 关闭防火墙
- 在所有虚拟机上关闭防火墙 : systemctl disable firewalld.service 【切换到超级用户下】
- 重启机器 : reboot 【重启所有的虚拟机】
- 查看防火墙状态 : systemctl status firewalld.service 【 普通用户下输入】
1.7步骤七 格式化hadoop系统
格式化文件系统 :【切换到普通用户下】
- 必须在主节点上 : hdfs namenode -format
- 验证是否格式化成功:查看hadoop的安装目录下是否有hdfsdata文件夹
- 切换到目录 : cd /usr/local/hadoop-2.9.2
- 查看其下的所有内容 : ls
1.8步骤八 启动hadoop
- 启动全分布模式Hadoop集群的守护进程
a) 命令1:start-dfs.sh
b) 命令2:start-yarn.sh
c) 命令3:mr-jobhistory-daemon.sh start historyserver
说明:
a) 命令1执行后,所产生的文件及服务
b) 启动的服务:主节点(NameNode SecondaryNameNode),从节点( DataNode )
查看启动了哪些服务的方法:
命令:jps
生成的文件:
c) 在主节点的hadoop安装目录/hdfsdata/dfs中自动生成namesecondary目录及文件
在主,从节点的hadoop安装目录下生logs日志文件目录及文件,pids守护进程号目录及文件
在从节点的hadoop安装目录/hdfsdata/dfs中自动生成data数据块目录及文件
d) 命令2执行后,所产生的文件及服务
启动的服务:主节点(ResourceManager)
从节点(NodeManager)
生成的文件:在从节点的hadoop安装目录的hdfsdata下产生nm-local-dir文件目录及文件
生成的文件:在个日志文件目录(logs)中,会生成各日志文件。
e) 命令3执行后,所产生的文件及服务
启动的服务:主节点(JobHistoryServer)
生成的文件:在各日志文件目录(logs)中,产生日志文件
注:与mapreduce有关的日志文件
1.9步骤九 验证hadoop集群
- 步骤1:打开浏览器
- 步骤2:输入网址(master的ip地址)
a) 192.168.246.128:50070 HDFS 进程的Web
b) 192.168.246.128:8088 YARN 进程的Web
c) 192.168.246.128:19888 MapReduce 进程的Web
- 运行第1个MapReduce程序—WordCount
a) 三大核心:存储(HDFS) 计算(MapReduce) 管理框架(yarn)
b) 在根目录下,新建一个存放需要计算的文件的文件夹 (InputDataTest)
c) hdfs dfs -mkdir /InputDataTest
d) 上传两个文件hadoop-env.sh ,mapred-env.sh
e) hdfsdfs-put /usr/local/hadoop-2.9.2/etc/hadoop/hadoop-env.sh /InputDataTest hdfs dfs -put /usr/local/hadoop-2.9.2/etc/hadoop/mapred-env.sh /InputDataTest
f) 运行WordCount( 工作目录:/usr/local/hadoop-2.9.2/share/hadoop/mapreduce/)
hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcout 源文件夹 目标文件夹
功能:统计源文件中的每个字符的个数,将统计结果存放到目标文件中
示例:hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcout /InputDataTest
/OutputDataTest
g) 查看运行结果
h) hdfs dfs -ls /OutputDataTest
注意:会有两个文件(_SUCCESS:表示运行成功,没有任何内容)
part-r-00000:里面存放的运行结果,查看该文件内容的命令hdfs dfs -cat /OutputDataTest/part-r-00000
1.10步骤十 退出hadoop集群
关闭Hadoop
说明:闭流程和启动流程相反,有以下三个命令
1. mr-jobhistory-daemon.sh stop historyserver
2. stop-yarn.sh
3. stop-dfs.sh