Hadoop

hadoop笔记
jdk配置
一先删除系统自带的jdk
1、which java
/usr/bin/java Linux系统自带的jdk 
java -version  发现有OpenJDK,,,,说明是自带jdk
删除自带JDK: rm -rf /usr/bin/java


二、配置用户自己的JDK
1、上传jdk包并且解压:
tar -zxvf jdk-7u79-linux-x64.tar.gz
2、修改配置文件 sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
PATH=$PATH:$JAVA_HOME/bin:
3、刷新配置文件:source /etc/profile
4、which java 查看当前系统使用的jdk:~/jdk1.7.0_79/bin/java


三、运行Hadoop单机版
1、上传Hadoop包并且解压
2、Hadoop目录要属性的目录:share、etc、bin/sbin
3、配置java环境变量(Hadoop框架用java开发)
4、给Hadoop框架配置jdk
vi /opt/hadoop/etc/hadoop/hadoop-env.sh
将export JAVA_HOME=${JAVA_HOME} 修改为
export JAVA_HOME=/opt/jdk
5、运行测试

集群搭建准备

1.1 HADOOP集群搭建

1.1.1集群简介

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起

HDFS集群:

负责海量数据的存储,集群中的角色主要有 NameNode / DataNode

YARN集群:

负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager

(mapreduce是什么呢?它其实是一个应用程序开发包)

 

 

1.1.2服务器准备

本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:

ü Vmware 11.0

ü Centos  6.5  64bit

 

1.1.3网络环境准备

ü 采用NAT方式联网

ü 网关地址:192.168.42.1

ü 3个服务器节点IP地址:192.168.42.128192.168.42.129192.168.42.131

ü 子网掩码:255.255.255.0

1.1.4服务器系统设置

ü 添加HADOOP用户

Useradd  hadoop

Passwd hadoop

ü HADOOP用户分配sudoer权限

**为用户配置sudo权限,该用户才能使用sudo

root编辑 vi /etc/sudoers

在文件的如下位置,为hadoop添加一行即可

root    ALL=(ALL)       ALL     

hadoop  ALL=(ALL)       ALL

#如果需要用户hadoop使用sudo命令时不输入密码,则是输入以下一句:

hadoop  ALL=(ALL)       NOPASSWD:ALL

 

ü 同步时间: sudo date -s "00:00:00" 

ü 设置主机名:sudo vi /etc/sysconfig/network

n hdp-qm-01

n hdp-qm-02

n hdp-qm-03

 

ü 配置内网域名映射:sudo vi /etc/hosts

n 192.168.42.128         hdp-qm-01

n 192.168.42.129         hdp-qm-02

n 192.168.42.131         hdp-qm-03

 

ü 配置防火墙

# service iptables start

#service iptables status

#service iptables stop

# chkconfig iptables --list

 # chkconfig iptables off

# service iptables save

 

1.1.4 使用SSH协议免登陆远程计算机

计算机A每次SSH远程连接计算机B时,都需要输入密码。当有些软件需要频繁使用SSH连接其他计算机时,这个时候需要人工填写计算机B的密码,这个会造成大量无用操作,不利于程序的使用。

在为了避免这类问题的发生,而且也要兼顾安全问题(设置SSH免密码登陆后,SSH这台计算就不需要密码即可登陆,存在安全隐患),使用公钥和私钥方式解决SSH免密码登陆问题,而且只在一边做,另一边不做,这样也达到了安全的问题。一般是那台机器需要SSH远程其他机器,就在这台机器上设置SSH免登陆操作。

"公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub 私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。

ssh 无密码登录要使用公钥与私钥。linux下可以用ssh-keygen生成公钥/私钥对。

 

 

//设置免密码ssh  方式一  选其一

# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

# scp ~/.ssh/authorized_keys slave1:/root/.ssh/

# scp ~/.ssh/authorized_keys slave2:/root/.ssh/

//设置免密码ssh  方式二  选其一

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub master@root

ssh-copy-id -i ~/.ssh/id_rsa.pub slave1@root

ssh-copy-id -i ~/.ssh/id_rsa.pub slave2@root

//设置免密码ssh  方式三  选其一  (推荐方式三)

ssh-keygen -t rsa

ssh-copy-id  hadoop@ hdp-qm-01

ssh-copy-id  hadoop@ hdp-qm-02

ssh-copy-id  hadoop@ hdp-qm-03

 

ssh-copy-id  pj@hdp-pj-01

 

   不管是root还是普通用户环境下头执行执行就可以了!

1.1.5 Jdk环境安装

上传jdk安装包

规划安装目录 /home/hadoop/jdk1.7.0_79

n 解压安装包

配置环境变量 /etc/profile

  注意:jdk安装包发送给其他节点:

scp -r jdk1.7.0_79 hadoop@hdp-qm-02:/home/hadoop/

scp -r jdk1.7.0_79 hadoop@hdp-qm-03:/home/hadoop/

也可以发送环境变量过去:

sudo scp /etc/profile root@hdp-qm-02:/etc/

sudo scp /etc/profile root@hdp-qm-03:/etc/

刷新系统环境变量配置文件: source /etc/profile

 

Hadoop集群下的全分布式的安装

三个节点的集群案例(5个节点学生完成)

主机名称

备注

IP地址

功能

hdp-qm-01

Master

192.168.42.128

NameNodeDataNodeResourceManagerNodeManager

hdp-qm-02

Slave

192.168.42.129

DataNodeNodeManagerSecondaryNameNode

hdp-qm-03

Slave

192.168.42.131

DataNodeNodeManager

所有机子都需要配置

1.JDK        2.SSH免登陆      3.Hadoop集群

 

Hadoop集群搭建:cd /home/hadoop/hadoop-2.6.0/etc/hadoop/

修改hadoop-env.sh文件

hadoop-env.sh文件中的

export JAVA_HOME=${JAVA_HOME} 

或者

export JAVA_HOME= /home/hadoop/jdk1.7.0_79

 

修改core-site.xml文件

<property>

<name>fs.defaultFS</name>

<!--配置hdfs系统的地址-->

<value>hdfs://hdp-qm-01:8020</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>4096</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop/hadoop-2.6.0/hadoopdata/tmp</value>

</property>

 

修改hdfs-site.xml文件

<property>

<!--副本数3-->

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

<!--hadoop2.x默认数据块大小是128M-->

<name>dfs.blocksize</name>

<value>134217728</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<!--NameNode节点存储元数据的位置-->

<value>file:///home/hadoop/hadoop-2.6.0/hadoopdata/dfs/name</value>

</property>

<property>

<!--DataNode节点存储数据块的位置-->

<name>dfs.datanode.data.dir</name>

<value>file:///home/hadoop/hadoop-2.6.0/hadoopdata/dfs/data</value>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>file:///home/hadoop/hadoop-2.6.0/hadoopdata/checkpoint/dfs/cname</value>

</property>

<property>

<name>fs.checkpoint.edits.dir</name>

<value>file:///home/hadoop/hadoop-2.6.0/hadoopdata/checkpoint/dfs/cname</value>

</property>

<property>

<!--hdfs系统的web地址-->

   <name>dfs.http.address</name>

   <value>hdp-qm-01:50070</value>

</property>

<property>

   <name>dfs.secondary.http.address</name>

   <value>hdp-qm-02:50090</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

 

修改mapred-site.xml文件

命令如下:

# mv mapred-site.xml.template  mapred-site.xml

#vi mapred-site.xml

<property>

<!--配置执行计算模型时使用yarn资源调度器-->

<name>mapreduce.framework.name</name>

<value>yarn</value>

<final>true</final>

</property>

<property>

<!--配置MapReduce框架的历史服务的地址-->

<name>mapreduce.jobhistory.address</name>

<value>hdp-qm-01:10020</value>

</property>

<property>

<!--配置MapReduce框架的历史服务的地址-->

<name>mapreduce.jobhistory.webapp.address</name>

<value>hdp-qm-01:19888</value>

</property>

 

修改yarn-site.xml

<property>

<!--配置resourcemanager服务的地址-->

<name>yarn.resourcemanager.hostname</name>

<value>hdp-qm-01</value>

</property>

<property>

<!--配置mapreduceshuffle服务的地址-->

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>hdp-qm-01:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>hdp-qm-01:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>hdp-qm-01:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>hdp-qm-01:8033</value>

</property>

<property>

<!--配置resourcemanagerweb访问地址-->

<name>yarn.resourcemanager.webapp.address</name>

<value>hdp-qm-01:8088</value>

</property>

 

#vi  slaves

将所有需要配置成slave类型的机器的机器名写在其内部即可.

注意:每个机器名占一行。

hdp-qm-01

hdp-qm-02

hdp-qm-03

#vi /etc/hadoop/master

Master文件存的是的secondarynamenode列表

# vi master

hdp-qm-02

 

//将配置好的Hadoop文件夹发送给slave1slave2机子

#scp -r hadoop-2.6.0 hadoop@hdp-qm-02:/home/hadoop/

#scp -r hadoop-2.6.0 hadoop@hdp-qm-03:/home/hadoop/

 

配置Hadoop框架的环境变量:

export HADOOP_HOME=/home/hadoop/hadoop-2.6.0

PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# source /etc/profile

发送hadoop的环境变量到其他节点:

scp /etc/profile root@hdp-qm-02:/etc/

scp /etc/profile root@hdp-qm-03:/etc/

 

//启动Hadoop集群

//启动之前先格式化,只需要一次即可(NameNode节点)

#hadoop namenode -format

//启动namenodedatanodeResourceManager、NodeManager节点

# start-dfs.sh

# start-yarn.sh

常用命令参数介绍

-help             

功能:输出这个命令参数手册

-ls                  

功能:显示目录信息

示例: hadoop fs -ls hdfs://hadoop-server01:9000/

备注:这些参数中,所有的hdfs路径都可以简写

-->hadoop fs -ls /   等同于上一条命令的效果

-mkdir              

功能:在hdfs上创建目录

示例:hadoop fs  -mkdir  -p  /aaa/bbb/cc/dd

-moveFromLocal            

功能:从本地剪切粘贴到hdfs

示例:hadoop  fs  - moveFromLocal  /home/hadoop/a.txt  /aaa/bbb/cc/dd

-moveToLocal              

功能:从hdfs剪切粘贴到本地

示例:hadoop  fs  - moveToLocal   /aaa/bbb/cc/dd  /home/hadoop/a.txt

--appendToFile  

功能:追加一个文件到已经存在的文件末尾

示例:hadoop  fs  -appendToFile  ./hello.txt  hdfs://hadoop-server01:9000/hello.txt

可以简写为:

Hadoop  fs  -appendToFile  ./hello.txt  /hello.txt

 

-cat  

功能:显示文件内容  

示例:hadoop fs -cat  /hello.txt

 

-tail                 

功能:显示一个文件的末尾

示例:hadoop  fs  -tail  /weblog/access_log.1

-text                  

功能:以字符形式打印一个文件的内容

示例:hadoop  fs  -text  /weblog/access_log.1

-chgrp

-chmod

-chown

功能:linux文件系统中的用法一样,对文件所属权限

示例:

hadoop  fs  -chmod  666  /hello.txt

hadoop  fs  -chown  someuser:somegrp   /hello.txt

-copyFromLocal  à -put  

功能:从本地文件系统中拷贝文件到hdfs路径去

示例:hadoop  fs  -copyFromLocal  ./jdk.tar.gz  /aaa/

-copyToLocal     à -get

功能:从hdfs拷贝到本地

示例:hadoop fs -copyToLocal /aaa/jdk.tar.gz

-cp              

功能:从hdfs的一个路径拷贝hdfs的另一个路径

示例: hadoop  fs  -cp  /aaa/jdk.tar.gz  /bbb/jdk.tar.gz.2

 

-mv                     

功能:在hdfs目录中移动文件

示例: hadoop  fs  -mv  /aaa/jdk.tar.gz  /

-get              

功能:等同于copyToLocal,就是从hdfs下载文件到本地

示例:hadoop fs -get  /aaa/jdk.tar.gz

-getmerge             

功能:合并下载多个文件

示例:比如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,...

hadoop fs -getmerge /aaa/log.* ./log.sum

-put                

功能:等同于copyFromLocal

示例:hadoop  fs  -put  /aaa/jdk.tar.gz  /bbb/jdk.tar.gz.2

 

-rm                

功能:删除文件或文件夹

示例:hadoop fs -rm -r /aaa/bbb/

 

-rmdir                 

功能:删除空目录

示例:hadoop  fs  -rmdir   /aaa/bbb/ccc

-df               

功能:统计文件系统的可用空间信息

示例:hadoop  fs  -df  -h  /

 

-du

功能:统计文件夹的大小信息

示例:

hadoop  fs  -du  -s  -h /aaa/*

 

-count         

功能:统计一个指定目录下的文件节点数量

示例:hadoop fs -count /aaa/

 

-setrep                

功能:设置hdfs中文件的副本数量

示例:hadoop fs -setrep 3 /aaa/jdk.tar.gz

<这里设置的副本数只是记录在namenode的元数据中,是否真的会有这么多副本,还得看datanode的数量>

 

 

 - hadoop/bin      存放常用命令,如hadoop,hdfs等。

 - Hadoop/data     存放本地hdfs系统的信息

 - hadoop/etc      目录下有一个hadoop目录,主要存放hadoop生态系统的配置文件

 - hadoop/include  对外提供的编程头文件,主要是使用C++编写mapredurce程序是使用

 - hadoop/lib      存放本地库

 - hadoop/libexec  几个服务对应shell脚本的存放目录

 - hadoop/logs     日志文件

 - hadoop/sbin     主要脚本目录,主要用于hdfs和yarn的开启和关闭

 - hadoop/share    存放文档和静态jar包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值