Hadoop集群安装(3个节点)

1. 网络配置【所有节点】

修改hostname

在每个节点上执行hostname [主机名]

配置网络

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=node4  #【每个节点改成相应的hostname】

NETWORKING_IPV6=no

PEERNTP=no

保存退出

重启网络服务

service network restart

配置hosts

 

192.168.138.134 node4

192.168.138.135 node5

192.168.138.136 node6

2. 设置ssh免密登陆【所有节点】

生成无密码的**对

ssh-****** -t rsa

一路回车

将公钥添加到本地认证文件中

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

设置authorized_keys的访问权限

chmod 600 /root/.ssh/authorized_keys

**以上步骤先在每个节点上先执行一遍,然后执行下面操作

将每个节点上生成的id_rsa.pub复制到其他所有节点并添加到它们的认证文件中

比如:node4上生成的id_rsa.pub,复制到node5和node6上

scp /root/.ssh/id_rsa.pub node5:/root/(node4上执行)

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys(在node5上执行)

scp /root/.ssh/id_rsa.pub node6:/root/(node4上执行)

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys(在node6上执行)

其余节点类似操作

验证是否配置免密登录成功:ssh [email protected]看是否需要输入密码

3. 安装Oracle的JDK【所有节点】

如果CentOS装有OpenJDK,卸载之

卸载自带的OpenJDK

使用rpm -qa  |  grep java查询java相关的包

使用rpm -qa  |  grep openjdk  |  xargs rpm -e --nodeps卸载之

安装oracle jdk

采用的tar.gz包安装,解压压缩包jdk1.7.0_80.tar.gz,并且将解压的到的文件夹jdk1.7.0_80复制到/usr/java/jdk1.7(该目录是Cloudera Manager查找JAVA_HOME的一个路径)

tar zxvf jdk1.7.0_80.tar.gz

mkdir -p /usr/java/jdk1.7

mv jdk1.7.0_80/* /usr/java/jdk1.7

rmdir jdk1.7.0_80

配置环境变量

vi /etc/profile

将以下内容添加到profile

export JAVA_HOME=/usr/java/jdk1.7

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

然后刷新

source /etc/profile

4. 安装Hadoop集群

在node4主机上安装hadoop

安装位置自定,例如安装在/usr目录下面

下载hadoop包,放在/usr目录下,解压hadoop

tar -zxvf /opt/hadoop/hadoop-2.6.4.tar.gz

 

在usr下面生成hadoop-2.6.4目录

配置环境变量:

vi /etc/profile

在末尾添加:

export HADOOP_HOME=/usr/ hadoop-2.6.4

export PATH=$PATH:$HADOOP_HOME/bin

保存后使新编辑的profile生效:

source /etc/profile

5. 配置hadoop

配置hadoop配置文件

需要配置的文件的位置为/hadoop-2.6.4/etc/hadoop,需要修改的有以下几个:

hadoop-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves

详细操作:

(1)vi hadoop-env.sh -->配置JAVA_HOME,JAVA_HOME的值是jdk的安装路径

在hadoop-env.sh文件中增加:export JAVA_HOME=jdk的安装路径,如下图示例。

Hadoop集群安装(3个节点)

 

(2)vi yarn-env.sh -->配置JAVA_HOME,JAVA_HOME的值是jdk的安装路径

Hadoop集群安装(3个节点)

 

(3)vi core-site.xml -->增加hadoop核心配置

<!--fs.dafaultFS-这是一个描述集群中NameNode节点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode节点会先在NameNode上注册,这样他们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表-->

<!--hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中-->

补充:

<property>

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

        <value> /opt/module/hadoop/hadoop-2.6.4/tmp </value>

        (备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹)

        <description>A base for other temporary directories.</description>

 </property>

备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删掉,必须重新执行format才行,否则会出错。

Hadoop集群安装(3个节点)

 

(4)vi hdfs-site.xml --->增加hdfs配置信息(namenode、datanode端口和目录位置)

<!--dfs.replication -它决定着 系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)-->

     <property>

         <name>dfs.replication</name>

         <value>3</value>

     </property>

<!-- dfs.data.dir - 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆盖。

dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉-->

<!--解决: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>

<description>If "true", enable permission checking in HDFS. If "false", permission checking is turned off,but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories              </description>

     </property>

Hadoop集群安装(3个节点)

 

(5)cp mapred-site.xml.template mapred-site.xml

vi mapred-site.xml -->增加mapreduce配置(使用yarn框架、jobhistory地址、webapp地址)

Hadoop集群安装(3个节点)

 

(6)vi yarn-site.xml -->增加yarn功能

Hadoop集群安装(3个节点)

 

(7)vi slaves -->增加slaves节点(子节点)

Hadoop集群安装(3个节点)

 

(8)将配置好的hadoop文件copy到子节点上

scp slaves node5:/opt/module/hadoop/hadoop-2.6.4/etc/hadoop

scp slaves node6:/opt/module/hadoop/hadoop-2.6.4/etc/hadoop

Hadoop集群安装(3个节点)

 

如果子节点node5、node6上还没有Hadoop环境,可以把node4上整个Hadoop复制到node5、node6:

scp /opt/module/hadoop node5:/opt/module/

scp /opt/module/hadoop node6:/opt/module/

(9)格式化namenode

hdfs namenode –format

Hadoop集群安装(3个节点)

 

(10)启动hdfs:sbin/start-all.sh

(11)验证是否配置成功:jps

Hadoop集群安装(3个节点)

Hadoop集群安装(3个节点)

Hadoop集群安装(3个节点)

HDFS的守护进程

主节点:Namenode、SecondaryNamenode

从节点:Datanode

 

 

 

YARN的守护进程

主节点:ResourceManager

从节点:NodeManager

集群配置成功标识:

主节点上jps进程有:

NameNode

SecondaryNameNode

ResourceManager

每个子节点上的jps进程有:

DataNode

NodeManager

如果像上述这样,表示hadoop集群配置成功

(12)查看hdfs -->http://192.168.138.134:50070

Hadoop集群安装(3个节点)