Hadoop - Hadoop开发环境搭建
2016-04-06 10:24
330 查看
卸载JDK
查看当前jdk信息
rpm -qa|grep jdk
卸载
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
安装JDK
将JDK放置在/usr/local/java中
配置环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_45
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
检查是否已安装SSH
ssh -version
Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的。对于伪分布式Hadoop,SSH一样是必须的。
安装Hadoop
Hadoop集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通。
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode 和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器(可通过配置文件修改备用机器数)。
配置hosts文件(必须)
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器(这也就是为什么在修改主机名的同时最好修改该文件中对应的主机名),解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
所以在所有的机器上的"/etc/hosts"文件中都要添加如下内容:
192.168.1.141 Master.Hadoop
192.168.1.142 Slave1.Hadoop
192.168.1.137 Slave2.Hadoop
更改hadoop-2.7.0文件夹权限
chmod -R 777 hadoop-2.7.0 或 chmod +rwx hadoop-2.3.0
将hadoop目录添加进/etc/profile文件中
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.3.0
export PATH=$HADOOP_HOME/bin:$PATH
检验
hadoop version
配置/etc/sysconfig/network
HOSTNAME=Master.Hadoop
GATEWAY=192.168.1.1
多节点
Hadoop的四个节点上均是CentOS6.0系统,并且有一个相同的用户hadoop。
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行。
3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机。
Hadoop Cluster(集群)有3中模式
本地模式(单节点模式)
伪分布式模式
完全分布式模式
伪分布式模式配置
1 hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_45
2 core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.26.129:9000</value>
</property>
hdfs后面的一定要是你的centos的IP地址,这就是为什么要在上面先ifconfig得到ip地址的原因。有些教程说的那种localhost,是不正确的!后面和eclipse会连接不上!!这里又消耗了一个晚上的时间。。。
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop</value>
</property>
fs.default.name
描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。
DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。
独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表.
hadoop.tmp.dir
hadoop文件系统依赖的基础配置,很多路径都依赖它。
如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。
3 hdfs-site.xml (TBD)
<!-- dfs.replication -它决定着 系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个 数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的 可靠性(系统故障时,也许会造成数据丢失)-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
其中dfs.replication的value为1是因为我们这里配置的是单机伪分布式,只有一台机子.
<!-- dfs.data.dir - 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上 的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这 个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这 个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆
盖。
dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。-->
<property>
<name>dfs.name.dir</name>
<value>/home/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hdfs/data</value>
</property>
<!—解决:org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。
因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop , 由于 DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限, 命令如下 :$ hadoop fs -chmod 777 /user/hadoop -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
后面的dfs.permissions是为了让用户有权限~)
4 mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>192.168.26.129:9001</value>
</property>
<!-- mapred.job.tracker -JobTracker的主机(或者IP)和端口。-->
5 yarn-env.sh
# some Java parameters
export JAVA_HOME=/usr/local/java/jdk1.8.0_45
配置slaves文件(Master主机特有)
去掉"localhost",加入集群中所有Slave机器的IP,也是每行一个。
例如:添加形式如下
192.168.1.142
192.168.1.137
ip地址
ifconfig
192.168.26.129
start-all.sh在sbin中
master 在etc/hosts
masters 是主要的,应该记录的是 namenode 的 IP 或者是域名。
查看当前jdk信息
rpm -qa|grep jdk
卸载
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
安装JDK
将JDK放置在/usr/local/java中
配置环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_45
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
检查是否已安装SSH
ssh -version
Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的。对于伪分布式Hadoop,SSH一样是必须的。
安装Hadoop
Hadoop集群中包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通。
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode 和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器(可通过配置文件修改备用机器数)。
配置hosts文件(必须)
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器(这也就是为什么在修改主机名的同时最好修改该文件中对应的主机名),解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
所以在所有的机器上的"/etc/hosts"文件中都要添加如下内容:
192.168.1.141 Master.Hadoop
192.168.1.142 Slave1.Hadoop
192.168.1.137 Slave2.Hadoop
更改hadoop-2.7.0文件夹权限
chmod -R 777 hadoop-2.7.0 或 chmod +rwx hadoop-2.3.0
将hadoop目录添加进/etc/profile文件中
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.3.0
export PATH=$HADOOP_HOME/bin:$PATH
检验
hadoop version
配置/etc/sysconfig/network
HOSTNAME=Master.Hadoop
GATEWAY=192.168.1.1
多节点
Hadoop的四个节点上均是CentOS6.0系统,并且有一个相同的用户hadoop。
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行。
3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机。
Hadoop Cluster(集群)有3中模式
本地模式(单节点模式)
伪分布式模式
完全分布式模式
伪分布式模式配置
1 hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_45
2 core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.26.129:9000</value>
</property>
hdfs后面的一定要是你的centos的IP地址,这就是为什么要在上面先ifconfig得到ip地址的原因。有些教程说的那种localhost,是不正确的!后面和eclipse会连接不上!!这里又消耗了一个晚上的时间。。。
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop</value>
</property>
fs.default.name
描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。
DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。
独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表.
hadoop.tmp.dir
hadoop文件系统依赖的基础配置,很多路径都依赖它。
如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。
3 hdfs-site.xml (TBD)
<!-- dfs.replication -它决定着 系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个 数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的 可靠性(系统故障时,也许会造成数据丢失)-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
其中dfs.replication的value为1是因为我们这里配置的是单机伪分布式,只有一台机子.
<!-- dfs.data.dir - 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上 的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这 个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这 个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆
盖。
dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。-->
<property>
<name>dfs.name.dir</name>
<value>/home/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hdfs/data</value>
</property>
<!—解决:org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。
因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop , 由于 DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限, 命令如下 :$ hadoop fs -chmod 777 /user/hadoop -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
后面的dfs.permissions是为了让用户有权限~)
4 mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>192.168.26.129:9001</value>
</property>
<!-- mapred.job.tracker -JobTracker的主机(或者IP)和端口。-->
5 yarn-env.sh
# some Java parameters
export JAVA_HOME=/usr/local/java/jdk1.8.0_45
配置slaves文件(Master主机特有)
去掉"localhost",加入集群中所有Slave机器的IP,也是每行一个。
例如:添加形式如下
192.168.1.142
192.168.1.137
ip地址
ifconfig
192.168.26.129
start-all.sh在sbin中
master 在etc/hosts
masters 是主要的,应该记录的是 namenode 的 IP 或者是域名。
相关文章推荐
- System.Properties和System.getenv区别
- Linux应用服务器搭建手册——weblogic安装
- Linux下chkconfig命令详解
- umask文件权限屏蔽字
- linux如何禁止某个ip连接服务器
- Ubuntu下安装fastboot的时候出现 未发现软件包
- 局域网内Windows使用RealVNC远程连接CentOS6.5桌面
- 硬链接的创建及删除
- 阿里云CentOS使用vsftpd搭建FTP服务器
- LVS、Nginx、Haproxy三大负载均衡软件对比
- 由文件描述符得到文件的全路径
- 在linux下部署java项目的准备
- 聊聊架构
- shell 处理文本工具集合(常用命令)
- centos 改动字符集为GB2312的方法
- InfiniBand 技术及其在 Linux 系统中的配置简介
- 文件指针/句柄、文件描述符、文件路径的相互转换
- 图解opengl 3D 图形绘制实例
- Linux常用命令之scp
- symlink函数和readlink函数,以及得到当前运行程序本身的路径