hadoop之伪集群部署

hadoop入门简介
Hadoop是apache开源的一个大数据组件,它包括大数据的计算存储以及资源和作业调度功能个,官网hadoop.apache.org

广义: 以apache hadoop软件为主的生态圈(hive zookeeper spark hbase等)
狭义: apache hadoop软件 

hadoop的三大组成部分

hdfs:存储,分布式文件系统
mapreduce:计算 但是企业不用(开发难度高 代码量大 计算慢)
yarn:资源(CPU memory)和作业调度

下载安装包
百度搜索 cdh tar,打开第一个链接(http://archive.cloudera.com/cdh5/cdh/5/),该地址为cdh的软件仓库
搜索hadoop-2.6.0-cdh5.7.0,打开进入的是cdh版hadoop2.6.0的导航界面,该界面与hadoop官网的导航界面非常的类似,包含了详细的安装教程
返回chd软件仓库界面,选择对应的tar包点击下载

创建hadoop用户和上传hadoop软件

useradd hadoo #创建hadoop用户,遵循一个组件由一个用户管理原则
su - hadoopp
mkdir app data software lib source #创建安装/数据/软件包/jar包/源码等文件夹
cd software
rz  #将下载好的搜索hadoop软件以及jdk上传到software目录

使用root用户安装JDK

exit            #退出hadoop用户
java -version #查看系统是否已经默认安装了jdk
rpm -qa | grep jdk  #查询具体安装那些jdk软件
yum -y remove XXX  #将安装的jdk卸载,xxx为rpm查询的结果
 
mkdir /usr/java  # java安装目录,必须是该目录,CDH环境会识别它,采坑重要
mkdir /usr/share/java   #部署CDH需要mysql jdbc jar包,放在这里,采坑重要
 
tar -zxvf /home/hadoop/software/jdk-8u152-linux-x64.tar.gz -C /usr/java/ #解压
cd /usr/java 
ll         #仔细查看,很奇怪,发现拥有者是uucp,目前只发现jdk解压会这样,这是一个坑,生产特定情况下会出现问题,需要修改拥有者,采坑重要
chown -R root:root jdk1.8.0_152  #修改拥有者以及所属组
#扩展知识,uucp用户查看passwd文件,可知其解释器是/sbin/nologin,表示无法登录即无法su,生产中若遇到这样的账户,且必须要登录,可将/sbin/nologin改为/bin/bash

添加环境变量


vim /etc/profile #编辑环境变量文件,追加如下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_152
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JER_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JER_HOME/bin:$PATH
保存退出。
source /etc/profile #更新环境变量
java -version #这时候会发现java已经变成看我们想要的

配置ssh免密码互信

su - hadoop
ssh-keygen #连续四个回车,生产~/.ssh文件夹
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #将公钥放到一个文件夹中
chmod 600 authorized_keys #cdh操作指南这里没提示该步骤,但是hadoop官网有,不修改权限是后续不会成功地,采坑重要
ssh localhost date  #表示远程localhost机器执行date命令,不是远程过去,第一次远程需要输入yes确认

部署hdfs

su - hadoop
tar -zxvf ~/software/hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/app/ #解压
cd ~/app/hadoop-2.6.0-cdh5.7.0/
ll  #解压后的目录如下,大数据组件目录一般都有相似结构
bin                  # 客户端相关可执行脚本
bin-mapreduce1       #
cloudera             #
etc                  # 配置文件目录,一般都是conf
examples             # 样例
examples-mapreduce1  #
include              #
lib                  #jar包
libexec              #
LICENSE.txt          # 
NOTICE.txt           #
README.txt           #
sbin                 # 服务端相关可执行脚本
share                #共享文件
src                  #源码

编辑hadoop-env.sh配置文件

vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop-env.sh #编辑该文件添加或修改如下配置,java安装家目录以及hadoop安装的家目录。
export JAVA_HOME=/usr/java/jdk1.8.0_152
export HADOOP_PREFIX=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0

编辑core-site.xml配置文件

vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/core-site.xml     

编辑hdfs-site.xml配置文件

vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hdfs-site.xml

启动hdfs

~/app/hadoop-2.6.0-cdh5.7.0/bin/hdfs namenode -format #格式化文件系统,等待一会后出现successfully formatted日志信息,表示格式化成功
~/app/hadoop-2.6.0-cdh5.7.0/sbin/start-dfs.sh  #启动hdfs,观看控制台信息,得到如下信息:
1)、日志中显示分别启动了namenode、datanode、secondarynamenode三个进程,可用jps查看。
2)、启动secondary namenodes时提示我们要连接,因为该进程是在0.0.0.0服务器启动。上面我们只在localhost机器做了一次ssh登录,所以第一次ssh 0.0.0.0免秘钥时是需要yes确认的。
3) hadoop的日志为在~/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-用户名-进程名-主机名称.out 

通过 http://ip:50070/ 可访问hdfs界面

配置hadoop环境变量

su - hadoop
vim ~/.bash_profile # 配置hadoop环境变量,追加如下内容
export HADOOP_PREFIX=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
export PATH=$HADOOP_PREFIX/bin:$PATH
source ~/.bash_profile

hdfs命令

hdfs dfs #查找hdfs命令帮助,和linux及其相似
hdfs dfs -ls /  #列出/目录下所有文件,很类似于linux 的ls 

优化-以本机hostname机器启动hdfs

Jps  #可展示运行的三大进程
nameNode           简称nn,这里存储了文件的元信息,维护hdfs目录结构
Secondary nameNode 万年老二,备份nameNode,当namendoe挂了时它顶上
dateNode        真正干活的进程,即文件读写由该进程完成

hadoop配置文件简介


cd ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop #配置文件存放目录
ll
hadoop-env.sh     #配置jdk目录以及hadoop安装目录 重要
hdfs-site.xml         #hdfs配置的地方,如配置副本数 重要
mapred-env.sh|mapred-site.xml.template    #配置MR的地方,一般不需要配置
yarn-env.sh        #yarn环境配置的地方,一般不需要配置
yarn-site.xml        #yarn相关配置的地方        重要
core-site.xml        #是对yarn|hdfs|mr .xml 核心的和共有 配置

停止hdfs

su - hadoop
~/app/hadoop-2.6.0-cdh5.7.0/sbin/stop-dfs.sh    #停止hdfs

修改相应配置文件

exit    #退出hadoop用户,使用root用户
vim /etc/hosts  #编辑hosts文件配置主机映射(如:192.168.153.131 hadoop002),若已经配置过,则跳过,这里一定要注意,第一行和第二行不能删改,采坑重要
 
su - hadoop
vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/core-site.xml     #将配置中的<value>hdfs://localhost:9000</value>的localhost用hadoop002替换,更改了nameNode启动机器地址
 
vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/slaves #更改datanode启动机器地址,将localhost使用hadoop002替换,若以后多个dataNode节点,只需用逗号分隔即可。
 
vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hdfs-site.xml #修改secondarynamenode添加如下所示的配置内容,具体配置信息查询官网得知。
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop002:50090</value>
</property>
<property>
    <name>dfs.namenode.secondary.https-address</name>
    <value>hadoop002:50091</value>
</property>
 
~/app/hadoop-2.6.0-cdh5.7.0/sbin/start-dfs.sh #此时启动会发现三个进程都是以hadoop002启动的

优化-修改hadoop进程pid文件存放位置

mkdir /data/tmp    #创建pid文件存储目录
chmod -R 777 /data/tmp    
vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hadoop-env.sh #编辑,修改原有的为export HADOOP_PID_DIR=/data/tmp
~/app/hadoop-2.6.0-cdh5.7.0/sbin/stop-dfs.sh     #
~/app/hadoop-2.6.0-cdh5.7.0/sbin/start-dfs.sh     #重启hadoop进程

部署yarn

编辑mapred-site.xml,设置mr运行的环境为yarn
su - hadoop
cp ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/mapred-site.xml.template ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/mapred-site.xml  #复制一份配置文件
vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/mapred-site.xml #添加如下配置
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
 
编辑yarn-site.xml文件
vim ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/yarn-site.xml  #添加如下配置
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

启动yarn

~/app/hadoop-2.6.0-cdh5.7.0/sbin/start-yarn.sh  #启动yarn
jps   #这时会发现多出两个进程 ResourceManager和NodeManager
ResourceManager  :资源管理者,老大
NodeManager  :节点管理者,老二
通过http://ip:8088/ 可查看yarn运行界面

运行mapreudce进行词频统计

find ./ -name '*example*.jar'  #查询hadoop提供的样例jar包,找到我们需要的jar
hadoop jar ./app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar  #查看有哪些案列,我们需要的wordcount案列进行词频统计
 
#创建两个log文件并上传hdfs
cd ~/data/
vim a.log
cat a.log 
zuoze
Jge
dashu
adai
shiqi
1
[hadoop@hadoop002 data]$ cat b.log 
cat: b.log: No such file or directory
[hadoop@hadoop002 data]$ vim b.log 
[hadoop@hadoop002 data]$ cat b.log 
ruoze
ruoze
dashu
wsk
wsk
1
2
3
hdfs dfs -mkdir -p /wordcount/inputdata #创建输入数据文件夹
hdfs dfs -mkdir -p /wordcount/inputdata 
hdfs dfs -put b.log /wordcount/inputdata
hadoop jar ~/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /wordcount/inputdata /wordcount/outputdata1 #提交mr作业到yarn,运行job至完成需要等待一会儿
hdfs dfs -cat  /wordcount/outputdata1/part-r-00000 #查看词频统计结果
1    2
2    1
3    1
Jge    1
adai    1
dashu    2
ruoze    2
shiqi    1
wsk    2
zuoze    1

猜你喜欢

转载自blog.csdn.net/weixin_43212365/article/details/88586838