虚拟机与Windows下Hadoop的环境配置与安装
Hadoop 的配置与安装
需要jdk已经配置,这是前提!!
准备工作
将hadoop安装包上传到虚拟机中。
-
检查IP和hostname的映射是否正确
#查看本机ip ip addr
#查看hostname
hostname
#查看hosts配置信息
vim /etc/hosts
对应好!
-
解压hadoop安装包
#对应目录解压安装包 tar -zxvf hadoop-3.1.3.tar.gz -C /opt/software/
#顺手改个名字,方便使用
mv hadoop-3.1.3/ hadoop313
-
配置本机免密
#1、进入用户目录下 cd ~ #2、生成秘钥 ssh-keygen -t rsa
秘钥生成中一直按回车即可。
完成后可以看到在目录中生成了 .ssh 文件
#激活授权秘钥
cat id_rsa.pub>>authorized_keys
进入.ssh文件夹可以看到两个文件
用cat查看这两个文件,一个是公钥,一个是私钥
cat id_rsa.pub
cat id_rsa
测试一下自己连接自己
#连接
ssh root@你自己的hostname
#########
yes/no 选择 yes
提示输入密码,输入你的密码(root账户的密码)
#########
#退出
logout
#免密配置
cat id_rsa.pub>>authorized_keys
新增了两个文件
测试一下免密登录
环境变量配置
#1、打开配置文件
vim /etc/profile.d/myenv.sh
#2、添加hadoop环境变量
#-------------------
export HADOOP_HOME=/opt/software/hadoop313
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#-------------------
#3、激活环境变量
source /etc/profile
#4、#查看配置时候生效
echo $HADOOP_HOME
配置文件配置
-
配置 hadoop-env.sh
系统环境变量里没配就在这配
#打开 vim hadoop-env.sh
-
配置 core-site.xml
vim core-site.xml #配置文件 #################################################### <configuration> <!--配置namenode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.158.202:9820</value> </property> <!--配置数据存储目录--> <property> <name>hadoop.tmp.dir</name> <value>/opt/software/hadoop313/data</value> </property> <!--配置HDFS网页登录使用的静态用户为root--> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <!--配置root允许通过代理访问的主机节点--> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <!--配置root允许通过代理用户所属组--> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <!--配置root允许通过代理的用户--> <property> <name>hadoop.proxyuser.root.user</name> <value>*</value> </property> </configuration> ####################################################
-
配置 hdfs-site.xml
vim hdfs-site.xml ########################################## <configuration> <!--配置namenode web访问地址--> <property> <name>dfs.namenode.http-address</name> #自己的 <value>192.168.158.202:9870</value> </property> <!--配置secondary namenode web 访问地址--> <property> <name>dfs.namenode.secondary.http-address</name> #自己的 <value>192.168.158.202:9868</value> </property> <!--配置hdfs副本数量--> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> ##########################################
-
配置 yarn-site.xml
vim yarn-site.xml #################################################### <configuration> <!--配置mr的执行方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--配置ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> #自己的 <value>wantest03</value> </property> <!--配置环境变量的继承--> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> <!--配置yarn容器允许分配的最小内存--> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <!--配置yarn容器允许分配的最大内存--> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>1536</value> </property> <!--配置yarn容器允许管理的物理内存大小--> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>1536</value> </property> <!--配置关闭yarn对物理内存和虚拟内存限制的检查,jdk8运行于centsos6以上为导致虚拟内存过大--> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--配置关闭yarn对物理内存和虚拟内存的限制检查--> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!--开启日志聚集--> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!--配置日志聚集服务器地址--> <property> <name>yarn.log.server.url</name> #自己的 <value>http://192.168.158.202:19888/jobhistory/logs</value> </property> <!--配置日志保留时间为7天--> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <configuration> ####################################################
-
配置mapred-site.xml
vim mapred-site.xml #################################################### <configuration> <!--配置mapreduce运行于yarn上:默认为local,也可以指定spark阶段了解的mesos--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!--配置历史服务器地址--> <property> <name>mapreduce.jobhistory.address</name> #自己的 <value>192.168.158.202:10020</value> </property> <!--配置历史服务器web端地址--> <property> <name>mapreduce.jobhistory.webapp.address</name> #自己的 <value>192.168.158.202:19888</value> </property> </configuration> ####################################################
格式化namenode
#1、进入hadoop安装目录
cd /opt/software/hadoop313
#2、执行格式化
./bin/hdfs namenode -format
#3、启动服务
start-all.sh
#4、检测服务开启状态
jps
开启正常
虚拟机内部操作检查
先检查能否正常上传/下载文件至hadoop
hdfs dfs -ls /
hdfs dfs -mkdir -p /kb12/hd/cha01
hdfs dfs -put a.txt /kb12/hd/cha01
hdfs dfs -cat /kb12/hd/cha01/*
创建一个 wc01.log 文件上传至hadoop
#创建文件
vim wc01.log
#在hadoop中创建文件夹
hdfs dfs -mkdir /input
#上传文件至hadoop
hdfs dfs -put wc01.log /input
#查看文件
hdfs dfs -cat /input/wc01.log
跑一个自带的测试 wordcount 看看能否成功
#进入文件目录
/opt/software/hadoop313/share/hadoop/mapreduce/
#运行文件
hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount /input/wc01.log /output
有的可以一遍过,结果为:
卡在 map 0% reduce 0%
#在yran配置中添加初始分配内存
vim yarn-site.xml
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>256</value>
</property>
可能有的还是不行
#关闭安全模式
hdfs dfsadmin -safemode leave
#在系统环境变量中添加
export HADOOP_HOME=/opt/software/hadoop313
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#在mapred-site.xml添加
vim mapred-site.xml
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
windows下hadoop配置
-
准备windows下hadoop环境
获取与自己hadoop版本对应的 hadoop.dll 和 winutils.exe
https://github.com/cdarlint/winutils
将hadoop.dell放入Windows/System32下
将linux下的hadoop安装文件夹拷贝至本地,将winutils.exe放入本地的hadoop文件夹的bin目录下
-
配置windows环境变量
系统变量:
环境变量:
-
配置Windows本地hosts
填写虚拟机的ip和对应的主机名
-
在windows下跑一个 wordcount
创建一个空项目,将hadoop中搞的4个配置文件复制一份到resources中
运行代码,应该得到和在linux中进行wordcount测试差不多样子的结果
可以看到hadoop的 /out 文件下有了计算的结果,完成的任务中也可以查看到任务