hadoop集群搭建
hadoop 伪分布式环境搭建
2.1. 关闭防火墙
2.1.1. 查看防火墙状态
Systemctl status firewalld
2.1.2. 关闭防火墙
Systemctl stop firewalld
2.1.3. 查看防火墙开机启动状态
2.1.4. 关闭开机启动
Systemctl disable firewalld
2.2. 修改主机名
nmtui
2.3. 修改ip
2.4. 修改主机名和IP的映射关系
vi /etc/hosts
2.5. 安装jdk
2.5.1. 上传并解压jdk
tar -zxvf jdk-7u75-linux-x64.gz -C /hadoop/
2.5.2. 配置环境变量
vi /etc/profile
增加以下配置:
export JAVA_HOME=/hadoop/jdk1.7.0_75/
export PATH=$PATH:$JAVA_HOME/bin
刷新配置,使环境变量生效:
source /etc/profile
2.6. 安装hadoop
2.6.1. 上传并解压Hadoop
tar -zxvf hadoop-2.4.1.tar.gz -C /hadoop/
2.6.2. 配置环境变量
vi /etc/profile
增加以下配置:
export HADOOP_HOME=/hadoop/hadoop-2.4.1/
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
刷新配置,使环境变量生效:
source /etc/profile
2.6.3. 修改配置文件
需要修改5个配置文件,分别是:
export JAVA_HOME=/hadoop/jdk1.7.0_75/
2、core-site.xml:
<configuration>
<!-- 指定HDFS的namenode的通信地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/data</value>
</property>
</configuration>
3、hdfs-site.xml:
<configuration>
<!-- 配置HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4、mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、yarn-site.xml:
<configuration>
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
2.6.4. 格式化HDFS文件系统
hadoop namenode -format
2.6.5. 启动hadoop
- sbin/start-all.sh
为了安全起见,启动hadoop时,每启动一个服务都会让你输入密码,为了能够自动化运行hadoop,我们需要配置ssh免登陆,详见2.8章节
2.7. 验证Hadoop是否启动成功
2.7.1. 进程验证
输入命令jps,查看java进程,是不是有5个:
• NameNode
• SecondaryNameNode
• DataNode
• ResourceManager
• NodeManager
2.7.2. 控制台验证
hdfs管理界面:http://192.168.1.101:50070
yarn管理界面:http://192.168.1.101:8088
2.8. 配置本机ssh免登陆
2.8.1. 生成ssh免登陆密钥
1. ssh-keygen -t rsa
(四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
2.8.1. 公钥授权
1. #将公钥拷贝到要免密登陆的目标机器上
2. ssh-copy-id localhost
3. 或者
4. #把公钥追加到授权的key中
5. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. 集群环境搭建
3.1. 集群简介
HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起
• HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode
• YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager
3.2. 服务器准备
本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:
• Vmware 11.0
• Centos 6.5 64bit minimal
• jdk 1.7.0_75 64bit
• hadoop 2.6.4 64bit
3.3. 网络环境准备
• 采用NAT方式联网
• 网关地址:192.168.8.1
• 子网掩码:255.255.255.0
• 服务器节点IP地址:192.168.8.101
• 计算节点:192.168.8.102、192.168.8.103、192.168.8.104
3.4. 服务器系统设置
• 添加HADOOP用户
• 为HADOOP用户分配sudoer权限
• 同步时间
• 设置主机名
◦ hadoop01
◦ hadoop02
◦ hadoop03
◦ hadoop04
• 配置内网域名映射
◦ 192.168.8.101 hadoop01
◦ 192.168.8.102 hadoop02
◦ 192.168.8.103 hadoop03
◦ 192.168.8.104 hadoop04
• 配置ssh免密登陆
• 配置防火墙
3.5. Jdk环境安装
• 上传jdk安装包
• 解压安装包
• 配置环境变量 /etc/profile
3.6. HADOOP安装部署
• 上传hadoop安装包
• 解压安装包
• 配置环境变量 /etc/profile
3.6. HADOOP配置
1、vi hadoop-env.sh
1. export JAVA_HOME=/hadoop/jdk1.7.0_75/
2、vi core-site.xml
<configuration>
<!-- 指定HDFS的namenode的通信地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/data</value>
</property>
</configuration>
3、vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/data/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/data/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop01:50090</value>
</property>
</configuration>
4、vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5、vi yarn-site.xml
<configuration>
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6、vi slaves
1. hadoop02
2. hadoop03
3. hadoop04
7、复制hadoop到其它节点以及Jdk
1. scp -r /hadoop/hadoop-2.6.4 root@hadoop02:/hadoop
2. scp -r /hadoop/hadoop-2.6.4 root@hadoop03:/hadoop
3. scp -r /hadoop/hadoop-2.6.4 root@hadoop04:/hadoop
7、复制/etc/profile到其它节点
scp -r /etc/profile root@hadoop02:/etc/profile
scp -r /etc/profile root@ hadoop03:/etc/profile
scp -r /etc/profile root@ hadoop04:/etc/profile
3.7. 启动集群
1、初始化HDFS
bin/hadoop namenode -format
2、启动HDFS
sbin/start-dfs.sh
3、启动YARN
sbin/start-yarn.sh
3.8. 验证
1、jps
2、http://hadoop01:50070
3、http://hadoop01:8088
4、hdfs dfsadmin –report
3.9. 测试
3.9.1. 上传文件到HDFS
hadoop fs -mkdir -p /wordcount/input
hadoop fs -put /hadoop/words.txt /wordcount/input
3.9.2. 运行一个mapreduce程序
在HADOOP安装目录下,运行一个示例mr程序
#cd $HADOOP_HOME/share/hadoop/mapreduce/
hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input /wordcount/output
4. hadoop的安全模式
hadoop集群在刚启动的时候,会进入安全模式,这时候namenode上只有元数据信息,还没有datanode的位置信息,需要所有的datanode向他报告位置,然后namenode会维护好这些datanode的位置信息,之后再正常提供服务。
如果需要强制离开安全模式:可以使用指令:hadoop dfsadmin -safemode leave