Hadoop 最开始是搭建在Linux系统程序上的,为学习方便所以采用Linux系统来进行学习Hadoop
Hadoop环境搭建有三种模式
单机环境搭建 伪分布环境搭建 完全分布环境搭建
这里只讲前面两种
搭建环境前准备
1.Vmware 虚拟机下载安装:
官网:https://my.vmware.com 下载
2.Linux系统 下载安装:
官网:http://mirrors.163.com/centos/7.4.1708/isos/x86_64/
3.jdk linux版本下载
官网:https://www.oracle.com/
4.Hadoop 安装包下载
官网:http://hadoop.apache.org/
然后就是安装虚拟机---》安装CentOS系统----》安装JDK----》安装Hadoop
安装虚拟机查看我的博客:https://blog.csdn.net/weixin_39209728/article/details/79676920
ping通外网查看我的博客:https://blog.csdn.net/weixin_39209728/article/details/79679026
网络连接设置:有三种模式 (仅主机、 桥接 、nat)
1.仅主机;查看虚拟机的vment1--ip网段 (查看的是93)
设置ifconfig ens33 192.168.93.2(临时)
2.有网络情况下连接:
使用桥接
本机网段是0网段(需要查看)--和真实机网段是一个网段
需要修改ifconfig ens33 192.168.1.2(临时)
设置固定ip地址(查看本地ip地址所在网段 修改固定ip地址网段和本地一致)
ONBOOT=yes #开机自动打开
BOOTPROTO=static #静态获取
DNS1=192.168.0.1 #DNS解析地址
IPADDR=192.168.0.2 #固定ip地址设置
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.0.1 #默认网关
创建用户
useradd -d/usr/hadoop -m hadoop ---其中-d和-m用来为登录名hadoop产
生一个主目录/user/hadoop
passwd hadoop---设置密码
chown -R hadoop:hadoop /usr/hadoop/ ---分配权限
su hadoop ---以hadoop用户登录
su root--切换到root用户下
pwd ---显示当前用户所在位置
cd .. ---返回上级菜单
安装jdk 和 hadoop 并配置环境变量
cd /usr/hadoop/ ---找到该安装包
ll
sudo tar -xvf jdk(按tab键自动出来)...gz ----然后执行解压缩操作
sudo tar -xvf jdk(按tab键自动出来)...gz -C /usr/hadoop/jdk
vi /etc/profile/
export JAVA_HOME=/usr/hadoop/jdk1.7---设置环境变量
export PATH=/usr/hadoop/jdk1.7.0_80/bin:${PATH}--设置用户路径
source /etc/profile ----使变量设置生效
echo $JAVA_HOME # 检验变量值
java -version
$JAVA_HOME/bin/java -version # 与直接执行 java -version 一样
验证jdk版本号 验证jdk是否安装成功
hadoop版本以及安装
http://hadoop.apache.org/
下载2.7.5版本
用ftp上传
cd /usr/hadoop/
ll
sudo tar -xvf hadoop --解压缩
sudo tar -xvf hadoop (按tab键自动出来)...gz -C /usr/hadoop/had
vi /etc/profile/ ---配置环境变量
export HADOOP_HOME=/usr/hadoop/hadoop---设置环境变量
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:${PATH}--设置用户路径
source /etc/profile ----使变量设置生效
查看hadoop版本:hadoop version
配置hadoop环境配置文件
进入hadoop配置文件夹
配置hadoop环境配置文件
cd /usr/hadoop/hadoop-2.7.5/etc/hadoop
vi hadoop-env.sh
取消JAVA_HOME前面的#符号
Hadoop的目录结构
bin:hadoop的命令
sbin:hadoop的集群的命令
etc:hadoop的所有配置文件
share:
doc:文档
hadoop:所有jar包
common:共用的jar包
hdfs:
mapreduce:
hadoop的本地模式(单机模式)
1.特点 不具备hdfs 只能在测试MapReduce程序
2.安装 只需要配置hadoop-env.sh-----》修改JAVA_HOME路径就可以了
echo $JAVA_HOME -----查看JAVA_HOME所在位置
cd /usr/hadoop/hadoop-2.7.5/etc/hadoop
vi hadoop-env.sh
:set number ----打开行号
把JAVA_HOME重新配置一下
export JAVA_HOME=/usr/hadoop/jdk1.7.0_80
esc
:wq---->保存
3.演示一个Demo:
找到/usr/hadoop/hadoop-2.7.5/share/hadoop/mapreduce
这里都是mapreduce的程序
hadoop jar hadoop-mapreduce-examples-2.7.5.jar---执行命令程序
mkdir -p data/input
mkdir -p data/output ----创建输入 输出文件夹
cd data/input
vi data.txt
cd ~
cd /usr/hadoop/hadoop-2.7.5/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.5.jar wordcount
/usr/hadoop/hadoop-2.7.5/share/hadoop/mapreduce/data/input/data.txt
/usr/hadoop/hadoop-2.7.5/share/hadoop/mapreduce/data/output/wc.txt
---执行wordcount程序
日志;18/03/24 22:00:31 INFO mapreduce.Job: Job
job_local1944524983_0001 running in uber mode : false
MRPRODUCE有自己默认的排序规则
Hadoop的伪分布模式
1.特点:具备Hadoop的所有功能,在单机上模拟一个分布式的环境。
1)HDFS:主:NameNode 数据节点:DateNode
2)Yarn:容器,运行MapReduce程序
主节点:ResourceManager
从节点:NodeManager
伪分布模式的配置
hadoop-env.sh 配置参数 JAVA_HOME /usr/hadoop/jdk1.7.0_80
core-site.xml 配置参数 fs.defaultFS hdfs://<hostname>:9000
hadoop.tmp.dir /usr/hadoop/hadoop-2.7.5/tmp
hdfs-site.xml 配置参数 dfs.namenode.name.dir <dir>/dfs/namenode
dfs.datanode.data.dir <dir>/dfs/datanode
dfs.http.address <hostname>:50070
dfs.replication 1
dfs.permissions false
mapred-site.xml 配置参数 mapreduce.framework.name yarn
mapred.job.tracker hdfs://<hostname>:9001
mapred.system.dir file:/<dir>/mapred/system
mapred.local.dir file:/<dir>/mapred/local
yarn-site.xml 配置参数 yarn.resourcemanager.hostname <hostname>
yarn.nodemanager.aux-services mapreduce_shuffle
xml格式:
2.步骤
1)修改core-site.xml
<!-- 配置HDFS的NameNode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.0.2:9000</value>
</property>
<!-- 配置DataNode保存数据的位置 tmp目录必须事先就有-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.5/tmp</value>
</property>
2)修改hdfs-site.xml
cd /usr/hadoop/hadoop-2.7.5/
mkdir tmp
cd tmp
pwd ---拷贝当前目录位置
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/ylf/hadoop/dfs/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/ylf/hadoop/dfs/datanode</value>
<final>true</final>
</property>
<property>
<name>dfs.http.address</name>
<value>localhost:50070</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
If the port is 0 then the server will start on a free port.
</description>
</property>
<!-- 配置HDFS的冗余度-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 配置是否检查权限-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
3)修改mapred-site.xml
ls mapred-site.xml.template(Tab键) --查找mapred-site.xml
cp mapred-site.xml.template mapred-site.xml --修改文件名
vi mapred-site.xml ---编辑文件
<!-- 配置MR运行的框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://localhost:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>file:/home/ylf/hadoop/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>file:/home/ylf/hadoop/mapred/local</value>
<final>true</final>
</property>
4)修改yarn-site.xml
<!-- 配置ResourceManaget的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.0.2</value>
</property>
<!-- 配置执行任务的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
5)格式化namenode
hdfs namenode -format
日志:18/03/24 22:58:43 INFO common.Storage: Storage directory
/usr/hadoop/hadoop-2.7.5/tmp/dfs/name has been successfully
formatted.
说明格式化成功了
6)启动:在sbin目录下运行命令
start-all.sh
HDFS 存储数据
Yarn 执行程序
jps
7)访问
命令行
java api
web console:
HDFS:http://192.168.0.2:50070
Yarn:http://192.168.0.2:8088
hadoop 访问不了
1.修改:vi /etc/selinux/config
SELINUX=disabled
2.是否关闭linux系统的防火墙
关闭防火墙
如访问不通过 可能是防火墙没有关闭
伪集群搭建采用的是CentOS 7.0,而CentOS7.0默认使用的是firewall作为防火
墙,可以改为iptables。
Firewall:
systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动
改成iptables:
systemctl startiptables.service
jps命令能看到