Hadoop快速实战(二)——搭建分布式
来源:互联网 发布:c语言if else语句格式 编辑:程序博客网 时间:2024/04/29 10:30
前提,需要有linux环境
参见linux环境准备
一、安装hadoop
1、上传hadoop
我所使用的hadoop是hadoop-2.4.1.tar.gz,将其上传到用户所在目录下,并在用户目录下创建app目录,用于方便管理。将hadoop解压到该目录下
2、hadoop目录说明
进入app中可以看到hadoop-2.4.1的目录,进入看到
bin:可执行文件目录sbin:系统可执行文件etc:配置文件lib:与本地平台相关的库,这里的本地平台是linuxshare:核心jar包和文档
二、修改配置文件
配置文件都在etc目录下的hadoop文件夹中
1、hadoop-env.sh中的jdk修改
这个文件整体是不需要改的,但是如果你的jdk是用户自定义安装的而不是全局的,那么很有可能就获取不到,这时候需要修改jdk所在目录,将指定的jdk目录写死在文件中。
2、core-site.xml
指定默认文件系统
指定文件存储根目录
configuration标签默认是空的,添加如下内容
<configuration><property><name>fs.defaultFS</name>// ip地址也可以用主机名代替<value>hdfs://192.168.49.31:9000/</value></property><property><name>hadoop.tmp.dir</name><value>/home/fangxin/app/hadoop-2.4.1/tmp/</value></property></configuration>
fs.defaultFS表示默认文件系统
hdfs://192.168.49.31:9000表示是hdfs系统,在31服务器上,监听端口9000
hadoop.tmp.dir指定文件存储根目录,hadoop会在该目录下创建dfs文件目录,namenode创建namenode文件夹,datanode创建datanode文件夹。
如果配置该参数,那么就会以hadoop的tmp作为根目录,而这个目录重启后会清空。
3、hdfs-site.html
副本数量配置
<configuration><property><name>dfs.replication</name><value>1</value></property></configuration>
目前只有一个节点,所以备份1分
4、mapred-site.xml
目录下有mapred-site.xml.tempate,改为mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
设置mapreduce的默认资源调度框架,我用yarn
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
5、yarn-site.xml
yarn框架也是集群,也有主节点和从节点,它的主节点叫resourcemanager
配置
主集群名称
中间数据调度机制,这里用mapreduce_shuffle机制
<configuration><!-- Site specific YARN configuration properties --><property><name>yarn.resourcemanager.hostname</name><value></value></property></configuration>
6、从机配置slaves(集群配置项)
将要运行的从机的host配置在主机的slaves文件中。这样启动master的时候就会将事先配置的从机启动起来。
如果secondaryNamenode和namenode分离,需要用到配置文件master,否则不需要
hadoop2hadoop3
其他配置
可以给服务器配置host,这样可以避免使用ip地址
三、启动
配置hadoop环境变量。
如果想用hadoop命令作为全局变量,首先需要配置
// 命令vi /etc/profile// 修改内容JAVA_HOME=/usr/java/jdk1.7.0_79export HADOOP_HOME=/home/fangxin/app/hadoop-2.4.1export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
格式化namenode
// 命令hadoop namenode -format// 格式化过程中会让你回答一次,注意要使用大写的Y
如果成功了,可以看到如下信息
如果报错了,返回步骤二重新检查配置。
成功之后,我们之前在core-site.xml中配置的文件存储目录”tmp”会生成,并且有dfs子目录。
启动hdfs
sbin目录下,执行命令
start-dfs.sh
依次启动了namenode、datanode、secondarynamenode,期间要多次确认身份,按提示做即可。
启动完毕后通过
// 该命令在jdk的bin目录下,java进程统计jsp
命令查看进程
也可以通过
netstat -nltp
查看每个进程监听的端口是多少
例如:进程25898的namenode监听的为9000端口。有的进程监听的不止一个端口,因为不同的通信使用不同的端口。
启动yarn
start-yarn.sh
启动后可以看到ResourceManager和NodeManager两个进程
hadoop常见命令行
查看文件目录
hadoop fs -ls hdfs://192.168.49.31:9000/ 或者 hadoop fs -ls /注意:如果有以下报错Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/fangxin/app/hadoop-2.4.1/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.大概是hadoop默认编译的库是32位的。临时办法如下修改etc下面的hadoop-env.sh在末尾加上如下两行export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/nativeexport HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.library.path=$HADOOP_PREFIX/lib"但仍然有警告:17/02/08 09:03:25 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
存入文件
hadoop fs -put 文件名称 hdfs://192.168.49.31:9000/
存入hadoop的文件 在文件存储目录tmp的深处,具体位置在data/current/finalized文件夹中,如果大于128M则会被切分成多部分存储。
- 取出文件
hadoop fs -get /文件名
其中/表示hadoop的根目录,如果在多个目录下,依次寻找即可
- 创建目录
// 创建目录命令hadoop fs -mkdir /目录a/目录b
- 查看文件
hadoop fs -cat /文件目录/文件名称
MapReduce测试运行
- 统计单词数
1、准备一个文件,可以是文本文件,内容可以是一些单词,例如hello,good等等
2、将准备的文件上传到hadoop空间
3、进入share文件夹下的mapreduce
4、执行jar包 hadoop-mapreduce-example中的wordcount程序
hadoop jar hadoop-mapreduce-examples-2.4.1.jar wordcount /输入目录 /输出目录
如果按步骤执行可以,可以统计出你的文本单词内容
- 计算圆周率
hadoop jar hadoop-mapreduce-examples-2.4.1.jar pi 10 10
四、SSH远程登录
由于hadoop底层是通过SSH远程授权认证的,所以如果我们不配置SSH密钥的话,就需要不停地通过输入密码执行各种远程操作,非常麻烦。即使是单节点的本地hadoop操作。
什么是SSH:Secure Shell(安全外壳协议)。从一台linux主机登录到另一台linux主机上去。
参见 SSH远程登录的密钥验证授权机制
linux的SSH配置步骤:
1、本地生成密钥对
2、远程scp拷贝公钥到服务端
3、服务端,在.ssh目录下创建文件
$ touch authorized_keys
4、追加公钥信息到上述文件中
// 追加信息操作$ cat ~/id_rsa.pub >authorized_keys
5、authorized_keys文件必须只能是该用户可读可写,其他用户组都是无权的状态才能生效。
$ chmod 600 authorized_keys
6、从客户端远程登录,如果不要密码,说明配置成功
$ ssh 服务端名称
模仿上述配置,虽然伪分布式只有单节点,也可以配置本地的SSH协议,启动和关闭hadoop就都不需要密码了
- Hadoop快速实战(二)——搭建分布式
- Hadoop(二)——分布式集群搭建
- Hadoop(二)——分布式集群搭建
- Hadoop(二)——分布式集群搭建
- Hadoop实战(二) 搭建Hadoop集群
- hadoop环境搭建(二)伪分布式
- Hadoop伪分布式环境搭建(二)
- Hadoop分布式集群搭建(二)
- 搭建hadoop伪分布式(二)
- 搭建完全分布式Hadoop(二)
- 搭建Hadoop分布式开发环境(二)
- 快速搭建 Hadoop 分布式环境
- Hadoop分布式集群搭建(二 )完全分布式模式
- 快速搭建hadoop+hbase分布式集群
- Hadoop 伪分布式的快速搭建
- Spark分布式搭建(4)——ubuntu下Hadoop分布式搭建
- 从零开始搭建hadoop分布式集群环境:(二)安装JDK
- 伪分布式Hadoop及开发环境搭建(二)
- go语言快速入门:文档查询(19)
- myeclipse10配置maven
- net-snmp用法
- <img>标签链接失效显示默认图片
- SQL 约束
- Hadoop快速实战(二)——搭建分布式
- 《数据结构》严蔚敏版(java解)——第二章 线性表03 单链表操作
- 揭秘:APP定制开发的完整流程
- 迁移学习原理及实现(一)
- 一个可以提高开发效率的 Git 命令-- Cherry-Pick
- activity之间传递bean类型数据
- 博客归总
- Mac下如何配置环境变量
- 字符串扩展