一、jdk安装和配置环境
-
(一)Windows:
1.jdk安装 jdk工具来源:[http://www.oracle.com] JDK(java开发工具包)+ JRE(java运行环境) 2.jdk配置环境 进入系统:高级系统设置---》环境变量---》系统变量---》新建---》 环境变量配置:变量名:JAVA_HOME,变量值:jdk安装路径 变量名:CLASS_HOME,变量值:,%JAVA_HOME%; path:前面加上%JAVA_HOME%: 验证:开始菜单---》运行---》输入CMD java -version,javac -version
-
(二) Linux:
1、 上传 jdk-8u73-linux-x64.tar.gz 2、 解压到/usr/local 目录下 tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/local 3、 配置环境变量 a) vi /etc/profile b) 在最后加入两行: export JAVA_HOME=/usr/local/jdk1.8.0_73 export PATH=$PATH:$JAVA_HOME/bin c) 保存退出 4、 source /etc/profile 5、 检测是否安装成功,输入命:java -version
二、hadoop集群搭建
-
(一)基础集群环境准备
1.修改主机名 vi /etc/sysconfig/network(在root用户下,下同) 或 sudo vi /etc/sysconfig/network(在普通用户下,下同) 修改:NETWORKING=YES HOSTNAME=主机名 2.设置系统默认启动级别 vi /etc/inittab 修改:id:3:initdefault: 3:多用户模式,不启动图形界面 默认为5:图形界面模式 3.配置hadoop用户sudoer权限 vi /etc/sudoers 找到:root ALL=(ALL) ALL 添加:hadoop ALL=(ALL) ALL 4.配置IP vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改:IPADDR=IP地址 重启网路服务:service network restart 5.关闭防火墙/关闭selinux 关闭防火墙:service iptables stop 关闭selinux: vi /etc/selinux/config 修改:SELINUX=disabled 6.添加内网域名映射 vi /etc/hosts 添加:IP地址 主机名(如:192.168.2.101 hadoop01) 7.安装jdk 1) 上传 jdk-8u73-linux-x64.tar.gz 2) 解压到/usr/local 目录下 tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/local 3) 配置环境变量 a) vi /etc/profile b) 在最后加入两行: export JAVA_HOME=/usr/local/jdk1.8.0_73 export PATH=$PATH:$JAVA_HOME/bin c) 保存退出 4) source /etc/profile 5) 检测是否安装成功,输入命令:java -version 8.同步服务器时间(先更改时区) ntpdate 时间同步服务器 sudo ntpdate ntpl.aliyun.com 9.配置免密登录两种方式 1)第一种 a) 在 hadoop 登录状态下,输入命令 ssh-keygen 或者 ssh-keygen -t rsa b) 之后你会发现,在/home/hadoop/.ssh 目录下生成了公钥文件 c) 复制公钥文件到授权列表 cat ./id_rsa.pub >> authorized_keys d) 修改文件权限 chmod 600 ./authorized_keys e) 将该授权文件 authorized_keys 文件复制到 slave 节点 scp ./authorized_keys hadoop@hadoop02:~/.ssh/ f) 检查免密登录是否设置成功 ssh hadoop02 看看是不是能登录进入 hadoop02 的服务器 2)第二种 a) 在 hadoop 登录状态下,输入命令 ssh-keygen 或者 ssh-keygen -t rsa b) 之后你会发现,在/home/hadoop/.ssh 目录下生成了公钥文件 c) 使用一个更简单的方式,使用命令: ssh-copy-id hadoop02 建立 hadoop01 到 hadoop02 的免密登录
-
(二)集群环境安装
-
伪分布式模式安装
基础集群环境准备完毕 1. 修改 hadoop-env.sh 配置文件,添加 jdk 安装目录配置 vi hadoop-env.sh export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73 2. 修改 core-site.xml 核心文件配置文件 三个模块的公共的配置 vi core-site.xml <property> 配置项的名字 不可以改的 文件系统的默认访问路径 <name>fs.defaultFS</name> <value>hdfs://model:9000</value> 配置项的值 </property> hdfs://model(主机名):9000(端口号) jdbc:mysql://localhost 3. hdfs-site.xml hdfs的相关配置 <property> <name>dfs.replication</name> 文件存储的分数 <value>1</value> </property> 4. cp mapred-site.xml.template mapred-site.xml <property> <name>mapreduce.framework.name</name> mapreduce程序的资源调度框架 <value>yarn</value> </property> 5. yarn-site.xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> 6. 修改 slaves vi slaves hadoop01 从节点的信息 主机 一行一个主机名 主机名输完之后不要加空格 回车也不要 7. 添加 hadoop 环境变量 export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.5 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 8. 格式化 namenode hadoop namenode -format 最后出现successful formatted,则表示格式化成功 9. 启动 hdfs start-dfs.sh jps查看进程有:namenode,datanode,secondarynamenode 10. 启动 yarn start-yarn.sh jps查看进程有:namenode,datanode,secondarynamenode,nodemanager,resourcemanager 11. 检查集群启动是否成功 利用 jps 工具检测各进程是否启动成功 Web UI 查看 HDFS:http://hadoop01:50070/ MapReduce:http://hadoop01:8088/cluster/cluster
-
完全分布式安装
基础集群环境准备完毕 hadoop02 hadoop03远程发送 scp -r jdk1.8.0_73 hadoop02:/home/hadoop/apps/ scp -r jdk1.8.0_73 hadoop03:$PWD sudo scp /etc/profile hadoop02:/etc/ sudo scp /etc/profile hadoop03:/etc/ source /etc/profile 1.上传安装包,并解压到相关目录 put c:/hadoop-2.6.5-centos-6.7.tar.gz tar -zxvf hadoop-2.6.5-centos-6.7.tar.gz -C /home/hadoop/apps 2.修改 hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_73 3.修改 core-site.xml <property> 配置项的名字 不可以改的 文件系统的默认访问路径 <name>fs.defaultFS</name> <value>hdfs://model:9000</value> 配置项的值 </property> 4.修改 hdfs-site.xml <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/hadoopdata/name</value> <description>为了保证元数据的安全一般配置多个不同目录</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/hadoopdata/data</value> <description>datanode 的数据存储目录</description> </property> <property> <name>dfs.replication</name> <value>2</value> <description>HDFS 的数据块的副本存储个数</description> </property> <property> <name>dfs.secondary.http.address</name> <value>hadoop03:50090</value> <description>secondarynamenode 运行节点的信息,和 namenode 不同节点 </description> </property> 5.修改 mapred-site.xml(集群只有 mapred-site.xml.template,可以从这个文件进行复 制,或者直接改名也可) <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> 6.修改 yarn-site.xml <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop04</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>YARN 集群为 MapReduce 程序提供的 shuffle 服务</description> </property> 7.修改 slaves 文件,添加以下内容,该内容是从节点列表 hadoop02 hadoop03 hadoop04 8.分发安装包到各个节点,Hadoop 集群的每个节点都需要安装 Hadoop 安装包 scp -r hadoop-2.6.5 hadoop02:$PWD scp -r hadoop-2.6.5 hadoop03:$PWD 9.在 HDFS 主节点上执行命令进行初始化 namenode hadoop namenode -format 10.在 HDFS 上的主节点启动 HDFS,其实在哪里启动并无关系 start-dfs.sh 11.在 YARN 主节点启动 YARN,要求在 YARN 主节点进行启动,否则 ResourceManager 主进 程会启动不成功,需要额外手动启动 start-yarn.sh 12.检测 hdfs 是否启动成功 hadoop fs -ls /
-
高可用模式安装(HA)
基础集群环境准备完毕 1. 找到官网下载 hbase 安装包 hbase-1.2.4-bin.tar.gz [http://hbase.apache.org/1.2/book.html] 2. 上传安装包到服务器,并解压到对应的安装目录 tar -zxvf hbase-1.2.4-bin.tar.gz -C /home/hadoop/apps/ 3. vi hbase-env.sh export JAVA_HOME=/usr/local/jdk1.8.0_73,表示修改为自己的 jdk 目录 export HBASE_MANAGES_ZK=false,表示不引用 hbase 自带的 zookeeper,用我们自己安装的,保存退出 4. 修改 core-site.xml <configuration> <!-- 指定 hdfs 的 nameservice 为 bd1804 --> <property> <name>fs.defaultFS</name> <value>hdfs://bd1804/</value> </property> <!-- 指定 hadoop 工作目录 --> <property> <name>hadoop.tmp.dir</name> <value>/home/centos/data/hadoopdata/</value> </property> <!-- 指定 zookeeper 集群访问地址 --> <property> <name>ha.zookeeper.quorum</name> <value>centos01:2181,centos02:2181,centos03:2181</value> </property> </configuration> 5.修改 hdfs-site.xml <configuration> <!-- 指定副本数 --> <property> <name>dfs.replication</name> <value>2</value> </property> <!--指定 hdfs 的 nameservice 为 bd1804,需要和 core-site.xml 中保持一致--> <property> <name>dfs.nameservices</name> <value>bd1804</value> <!-- bd1804 下面有两个 NameNode,分别是 nn1,nn2(namenode的映射) --> <property> <property> <name>dfs.ha.namenodes.bd1804</name> <value>nn1,nn2</value> </property> <!-- nn1 的 RPC 通信地址 --> <property> <name>dfs.namenode.rpc-address.bd1804.nn1</name> <value>centos01:9000</value> </property> <!-- nn1 的 http 通信地址 --> <property> <name>dfs.namenode.http-address.bd1804.nn1</name> <value>centos01:50070</value> </property> <!-- nn2 的 RPC 通信地址 --> <property> <name>dfs.namenode.rpc-address.bd1804.nn2</name> <value>centos02:9000</value> </property> <!-- nn2 的 http 通信地址 --> <property> <name>dfs.namenode.http-address.bd1804.nn2</name> <value>centos02:50070</value> </property> <!-- 指定 NameNode 的 edits 元数据在 JournalNode 上的存放位置 qjournal:协议--> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://centos01:8485;centos02:8485;centos03:8485/bd1804</value> </property> <!-- 指定 JournalNode 在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/centos/data/hadoopdata/journaldata</value> </property> <!-- 开启 NameNode 失败自动切换 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <!-- 此处配置在安装的时候切记检查不要换行--> <property> <name>dfs.client.failover.proxy.provider.bd1804</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--> <property> <name>dfs.ha.fencing.methods</name> <value> sshfence shell(/bin/true) </value> </property> <!-- 使用 sshfence 隔离机制时需要 ssh 免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/centos/.ssh/id_rsa</value> </property> <!-- 配置 sshfence 隔离机制超时时间 毫秒 --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> </configuration> 6.修改 mapred-site.xml <configuration> <!-- 指定 mr 框架为 yarn 方式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 设置 mapreduce 的历史服务器地址和端口号 --> <property> <name>mapreduce.jobhistory.address</name> <value>centos02:10020</value> </property> <!-- mapreduce 历史服务器的 web 访问地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>centos02:19888</value> </property> </configuration> 7.修改 yarn-site.xml <configuration> <!-- 开启 RM 高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 指定 RM 的 cluster id --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yrc</value> </property> <!-- 指定 RM 的名字 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <!-- 分别指定 RM 的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>centos02</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>centos03</value> </property> <!-- 指定 zk 集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>centos01:2181,centos02:2181,centos03:2181</value> </property> <!-- 要运行 MapReduce 程序必须配置的附属服务 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 开启 YARN 集群的日志聚合功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- YARN 集群的聚合日志最长保留时长 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> </property> <!-- 启用自动恢复 --> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <!-- 制定 resourcemanager 的状态信息存储在 zookeeper 集群上--> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> </configuration> 8.vi hbase-site.xml 增加以下配置: <configuration> <property> <!-- 指定 hbase 在 HDFS 上存储的路径 --> <name>hbase.rootdir</name> <value>hdfs://myha01/hbase</value> </property> <property> <!-- 指定 hbase 是分布式的 --> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <!-- 指定 zk 的地址,多个用“,”分割 --> <name>hbase.zookeeper.quorum</name> <value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value> </property> </configuration> 9.修改 regionservers vi regionservers hadoop02 hadoop03 hadoop04 hadoop05 10.修改 backup-masters,指定备用的主节点 hadoop05 11.最最重要的一步,要把 hadoop 的 hdfs-site.xml 和 core-site.xml 放到 hbase/conf 下 cp ~/apps/hadoop-2.6.5/etc/hadoop/core-site.xml ~/apps/hbase-1.2.4/conf/ cp ~/apps/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ~/apps/hbase-1.2.4/conf/ 12.分发安装到各节点 scp -r hbase-1.2.4 root@hadoop02:/home/hadoop/apps/ scp -r hbase-1.2.4 root@hadoop03:/ home/hadoop /apps/ scp -r hbase-1.2.4 root@hadoop04:/ home/hadoop /apps/ 13.同步时间 14.配置环境变量 vi ~/.bashrc export HBASE_HOME=/home/hadoop/apps/hbase-1.2.4 export PATH=$PATH:$HBASE_HOME/bin 保存退出!!!别忘了执行 source ~/.bashrc,使配置生效 15.启动 zookeeper 集群 zkServer.sh start 16.启动 hdfs 集群 start-dfs.sh 17.启动 hbase 在主节点上启动:start-hbase.sh 18.查看启动是否正常,是否成功 1)检查各进程是否启动正常 主节点和备用节点都启动 hmaster 进程 各从节点都启动 hregionserver 进程 2)通过访问浏览器页面,格式为“主节点:16010” http://hadoop02:16010/ 19.如果有节点相应的进程没有启动,那么可以手动启动 hbase-daemon.sh start master hbase-daemon.sh start regionserver