hadoop及其组件安装
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop及其组件安装相关的知识,希望对你有一定的参考价值。
参考技术A 操作系统集群配置搭建3节点完全分布式集群,即1个nameNode,2个dataNode,分别如下:
1、创建虚拟机CentOS7并安装配置JDK,克隆两台
2、修改主机名:master、slave1、slave2
3、设置静态:10.221.101.1、10.221.101.2、10.221.101.3
4、关闭防火墙
5、免密设置
每台节点生成公钥:
master中将公钥id_dsa.pub添加进keys,实现master免密:
将master中公钥分别添加到slave1及slave2的keys中,实现master对slave1及slave2节点免密:
master执行 如下命令,进行验证
6、组件所用版本
安装路径:mkdir /usr/local/hadoop/hadoop-2.7.3/bin/
1、解压hadoop
2、 执行命令检查hadoop是否可用
查看是否显示hadoop版本信息Hadoop 2.7.3 显示即正常
3、创建所需目录
4、设置hadoop环境变量
任意目录输入 hado,然后按Tab,如果自动补全为hadoop,则说明环境变量配正确
同步到其他节点上
5、修改hadoop配置文件
—hadoop-env.sh
—core-site.xml
—hdfs-site.xml
—mapred-site.xml
—yarn-env.sh
—yarn-site.xml
— slaves
将localhost删掉,加入如下内容,即dataNode节点的hostname
6、 以上配置同步到slave1,slave2中
7、启动hadoop
— 首次启动需要先在 master 节点进行 NameNode 的格式化:
— 在master机器上,进入hadoop的sbin目录
8、查看是否启动成功
—jps 查看当前java的进程
输入jps 查看当前java的进程,列出当前java进程的PID和Java主类名,nameNode节点除了JPS,有3个进程
在slave1和slave2节点上分别输入 jps 查看进程如下,说明配置成功
— 查看运行状况
在浏览器访问nameNode节点的8088端口和50070端口可以查看hadoop的运行状况
192.168.1.110:50070
192.168.1.110:8088
zookeeper集群搭建要至少3个节点(master,slave1, slave2),所以三台服务器都要部署zookeeper
1、解压到安装目录
2、添加环境变量
同步到其他节点上
3、 修改配置文件
/usr/local/hadoop/zookeeper-3.4.10/conf
删除原有内容
4 、根据以上配置 创建zookeeper的数据文件和日志存放目录
同步到其它节点
5 、在三台zookeeper的/usr/local/storage/zookeeper/data目录下分别创建并编辑myid
—创建
—编辑
6 、将以上配置同步到其他hadoop节点
7、启动zookeeper
如果zookeeper集群还没有启动的话, 首先把各个zookeeper起来。最好三个节点上同时启动
(1个leader,2个follower)
输入jps,会显示启动进程:QuorumPeerMain
前提安装mysql
1、解压到安装目录
2、 添加环境变量
同步到其他节点上
3 、配置文件修改
—hive-env.sh
—hive-site.xml
4、 hive lib中添加所需jar包
—添加mysql驱动
【以下可不配置】
—从hbase/lib下复制必要jar包
—同步hive和hadoop的jline版本
查看版本
若有低版本则删除
例如:jline 0.9 rm jline-0.9.94.jar
—复制jdk的tools.jar
5 、在配置的mysql中创建hive库
【需外界可连接上】
6 、hdfs创建存储数据的目录
7、 启动hive
hive 远程服务 (端口号10000) 启动方式[metastore和hiveserver2在同一台上启动即可]
hive 命令行模式
或者输入
查看进程为:2个RunJar
注意:可以在任意一台服务器上启动hive,都可以。
8 、查看启动进程
通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode进程
Master上:
在 Slave 节点可以看到 DataNode 和 NodeManager 进程
Slave上:
程序启动成功后可以在任意一台启动hive
可以在启动MR-JobHistory服务,
Hadoop2 MR-JobHistory服务介绍
1)MR-JobHistory服务目标
主要是向用户提供历史的mapred Job 查询
详细解释:
a)在运行MR Job时,MR 的 ApplicationMaster会根据mapred-site.xml配置文件中的配置,将MR Job的job history信息保存到指定的hdfs路径(首先保存到临时目录,然后mv到最终目录)
b)如果在yarn-site.xml中,没有配置nodemanage的LogAggregation功能,则historyserver无法提供mr日志明细查询的功能(在提交mr job时,yarn和mapred的配置都是必须的)
c)historyserver向外提供两个接口,web接口可以提供jobhistory和明细日志查询的功能,而restApi只提供jobhistory查询的功能
1、 解压到安装目录
2、添加环境变量
同步到其他节点上
3、配置文件修改
/usr/local/hadoop/hbase-1.3.1/conf
—regionservers 文件
—hbase-env.sh
—hbase-site.xml
4、创建hbase-site.xml配置文件中的hbase目录
同步软件到其他节点
5、同步上述配置到其他节点
6、启动Hbase
—启动
—验证安装成功
—查看进程为:HMaster,HRegionServer
主节点:HMaster,HRegionServer
从节点:HRegionServer
—通过web UI访问hbase状态
http://192.168.1.110:16010/master-status
Hadoop学习-hdfs安装及其一些操作
hdfs:分布式文件系统
有目录结构,顶层目录是: /,存的是文件,把文件存入hdfs后,会把这个文件进行切块并且进行备份,切块大小和备份的数量有客户决定。
存文件的叫datanode,记录文件的切块信息的叫namenode
Hdfs的安装
准备四台linux服务器
先在hdp-01上进行下面操作
- 配置域名映射
vim /etc/hosts
主机名:hdp-01 对应的ip地址:192.168.33.61
主机名:hdp-02 对应的ip地址:192.168.33.62
主机名:hdp-03 对应的ip地址:192.168.33.63
主机名:hdp-04 对应的ip地址:192.168.33.64
- 更改本机的域名映射文件
c:/windows/system32/drivers/etc/hosts
192.168.33.61 hdp-01 192.168.33.62 hdp-02 192.168.33.63 hdp-03 192.168.33.64 hdp-04 |
- 关闭防火墙
service iptables stop
setenforce 0
- 安装jdk
在linux中 tar –zxvf jdk-8u141-linux-x64.tar.gz –C /root/apps/
然后vim /etc/profile
export JAVA_HOME=/root/apps/ jdk1.8.0_141
export PATH=$PATH:$JAVA_HOME/bin
然后source /etc/profile
Ok
- 安装scp
yum install -y openssh-clients
yum list
yum list | grep ssh
- 配置免密登录(在hdp-01上)
输入ssh-keygen
然后三次回车
然后
ssh-copy-id hdp-02
ssh-copy-id hdp-03
ssh-copy-id hdp-04
- 然后开始安装hadoop
上传压缩包,然后
[root@hdp-01 ~]# tar -zxvf hadoop-2.8.1.tar.gz -C apps/
然后修改配置文件
要点提示 |
核心配置参数: 1) 指定hadoop的默认文件系统为:hdfs 2) 指定hdfs的namenode节点为哪台机器 3) 指定namenode软件存储元数据的本地目录 4) 指定datanode软件存放文件块的本地目录 |
1) 修改hadoop-env.sh
export JAVA_HOME=/root/apps/ jdk1.8.0_141
2) 修改core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hdp-01:9000</value> </property> </configuration> |
3) 修改hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/root/hdpdata/name/</value> </property>
<property> <name>dfs.datanode.data.dir</name> <value>/root/hdpdata/data</value> </property>
<property> <name>dfs.namenode.secondary.http-address</name> <value>hdp-02:50090</value> </property>
</configuration> |
- 然后配置hadoop的环境变量 vi /etc/profile
export HADOOP_HOME=/root/apps/hadoop-2.8.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 讲apps下的东西和/etc/profile和/etc/hosts/都拷贝到其他的机器上
scp -r /root/apps/hadoop-2.8.1 hdp-02:/root/apps/
scp -r /root/apps/hadoop-2.8.1 hdp-03:/root/apps/
scp -r /root/apps/hadoop-2.8.1 hdp-04:/root/apps/
- 初始化元数据目录
hadoop namenode –format(在hdp-01上)
然后启动namenode进程
hadoop-daemon.sh start namenode
然后,在windows中用浏览器访问namenode提供的web端口:50070
http://hdp-01:50070
hadoop内部端口为9000
然后,启动众datanode们(在任意地方)
hadoop-daemon.sh start datanode
增加datanode随时可以,减少可不能瞎搞。。。。
或者一种方便的启动方法
修改hadoop安装目录中/etc/hadoop/slaves(把需要启动datanode进程的节点列入)
hdp-01 hdp-02 hdp-03 hdp-04 |
在hdp-01上用脚本:start-dfs.sh 来自动启动整个集群
如果要停止,则用脚本:stop-dfs.sh
hdfs的客户端会读以下两个参数,来决定切块大小、副本数量:
切块大小的参数: dfs.blocksize
副本数量的参数: dfs.replication
上面两个参数应该配置在客户端机器的hadoop目录中的hdfs-site.xml中配置
<property> <name>dfs.blocksize</name> <value>64m</value> </property>
<property> <name>dfs.replication</name> <value>2</value> </property>
|
至此完成
hdfs的一些操作
查看目录信息
hadoop fs -ls /
上传文件从/xxx/xx上传到/yy
hadoop fs -put /xxx/xx /yyy
hadoop fs -copyFromLocal /本地文件 /hdfs路径 ## copyFromLocal等价于 put
hadoop fs -moveFromLocal /本地文件 /hdfs路径 ## 跟copyFromLocal的区别是:从本地移动到hdfs中
下载文件到本地
hadoop fs -get /hdfs路径 /local路径
hadoop fs -copyToLocal /hdfs中的路径 /本地磁盘路径 ## 跟get等价
hadoop fs -moveToLocal /hdfs路径 /本地路径 ## 从hdfs中移动到本地
追加内容到已存在的文件
hadoop fs -appendToFile /本地文件 /hdfs中的文件
其他命令和linux的基本差不多只不过前面加hadoop fs –
额外知识
1.
元数据:对数据的描述信息,namenode记录的就叫元数据
2.
配置yum源配置文件
先将那个磁盘挂载到一个文件夹下比如/mnt/cdrom
然后配置yum
改为这样的
3.
命令netstat –nltp 监听端口号
或者ps –ef是查看进程号
4.
让防火墙每次开机不重启
chkconfig iptables off
service的执行脚本放在 /etc/service下
凡是能使用 service 服务 动作 的指令
都可以在/etc/init.d目录下执行
例如: /etc/init.d/sshd start
使用 service 服务 动作 例子 service papche2 restart
其实是执行了一个脚本
/etc/init.d apache2 restatr
linux服务器启动的时候分为6个等级
0.表示关机
1.单用户模式
2.无网络的多用户模式
3.有网络的多用户模式
4.不可用
5.图形化界面
6.重新启动
具体和默认的启动等级可以在 /etc/inittab目录下查看
查看各个级别下服务开机自启动情况 可以使用 chkconfig --list
增加一个自启动服务 chkconfig --add 服务名 例如 chkconfig --add sshd
减少一个自启动服务 chkconfig --add 服务名 例如 chkconfig --del sshd
chkconfig --level 等级 服务 off/on
chkconfig是当前不生效,Linux重启之后才生效的命令(开机自启动项)
service是即使生效,重启后失效的命令
5.
C语言写的东西和平台是有关系的,在Windows下写的东西放到linux不一定可以
而java可以,因为有java虚拟机
6.
Hdfs的url hdfs://hdp-01:9000/
ll –h
在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。
而使用 cat $filename > /dev/null 则不会得到任何信息,因为我们将本来该通过标准输出显示的文件信息重定向到了 /dev/null 中。
使用 cat $filename 1 > /dev/null 也会得到同样的效果,因为默认重定向的 1 就是标准输出。 如果你对 shell
7
Cat 来拼接两个文件,如在hdfs下的两个block文件
如此拼接就成了一个完整的源文件
源文件的路径在
java客户端的api
//官方文档
//先把hadoop安装包解压后的share目录下的hadoop目录下的相关jar包都拷到你的esclipe下。
//http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
//会先默认读取classpath中加载的core-default.xml.hdfs-default.xml core-size.xml....
//这些都是一个个jar包,你也可以在src目录下自己写一个hdfs-site.xml文件
Configuration conf = new Configuration();
conf.set("dfs.replication","2");//指定副本数
conf.set("dfs.blocksize","64m");//指定切块大小
//模拟一个客户端
FileSystem fs = FileSystem.get(new URI("hdfs://hdp-01:9000/"),conf,"root");
然后可以通过fs.xxxxx的方法来使用
以上是关于hadoop及其组件安装的主要内容,如果未能解决你的问题,请参考以下文章