版本描述 系统版本为 CentOS release 6.5 (Final) Hadoop版本:hadoop 2.6.0 64 bit 版本 Zookeeper 版本:zookeeper-3.4.6 Hive版本:apache-hive-1.1.0 JDK版本哦openjdk 1.8.0 说明:apache社区上发布的是32位的编译版本,直接安装在64位上会出现库的问题 至于如何获取64位的版本,可以自己编译也可以从网上获取 网络规划本系统设计的部件如下:hadoop2.6.0、zookeeper-3.4.6.tar.gz、hive-1.1.0、mysql 5.6.21 IP | hostname | 部件 | 进程 | 172.29.31.74 | namenodem | Hadoop | ResourceManager NameNode DFSZKFailoverController(zkfc) | 172.29.31.60 | namenodes | Hadoop、hive | ResourceManager NameNode DFSZKFailoverController(zkfc)
| 172.29.31.64 | datanode64 | Hadoop、zookeeper | JournalNode NodeManager DataNode zookeeper | 172.29.31.68 | Datanode68 | Hadoop、zookeeper | JournalNode NodeManager DataNode zookeeper | 172.29.31.71 | Datanode71 | Hadoop、zookeeper | JournalNode NodeManager DataNode zookeeper | 172.29.31.66 | mysql | mysql |
| 环境准备关闭防火墙在每个主机上做同样的操作 在root用户下 执行如下命令: serviceiptables stop 配置主机名在每个主机上做同样的操作 用户root用户 修改主机名: 1、vi/etc/hostname 2、把其中原来的名修改为网络规划中指定的主机名 3、vi/etc/hosts 4、在文件中添加如下数据 172.29.31.74 namenodem 172.29.31.60 namenodes 172.29.31.68 datanode68 172.29.31.71 datanode71 172.29.31.64 datanode64 5、重启生效 用户创建
用户创建在每个主机上做同样的操作 用root用户登录,在所有节点上创建用户,用户名为hadoop ,密码:hadoop (这是用我的名字创建的,当然是可以修改的) 1、创建用户组:groupadd hadoopgrp 2、执行如下命令: useradd hadoop -g hadoopgrp -d /home/hadoop
3、用户建立好,在设置密码 执行如下命令: passwd hadoop 在提示输入密码处输入:hadoop 在提示确认密码处输入:hadoop 建立信任关系创建密钥所有的主机上都执行同样测操作 1、切换用户到hadoop sudo su hadoop 2、创建.ssh 文件夹 在/home/hadoop目录下 mkdir .ssh 设置 .ssh 文件夹权限为 chmod 700 .ssh 3、创建密钥 执行如下命令:ssh-keygen -t rsa 持续回车确认,完成后在 .ssh目录下会产生如下两个文件 :id_rsa(私钥文件)id_rsa.pub(公钥文件) 建立信任关系 1、所有主机上的公钥copy到同一台机器上(我这里copy到主机namenodem上) scp ~/.ssh/id_rsa.pub hadoop@ namenodem:~/.ssh/id_rsa_ namenodes.pub (注意:加粗的部分一定要按源主机区分,否则会覆盖原来主机上的配置文件) 5、创建authorized_keys 进入namenodem主机中的.ssh目录中 执行:touch authorized_keys 6、把所有的公钥全部写入authorized_keys文件中 执行:cat id_rsa_ namenodes.pub >> authorized_keys (注意:加粗的部分一定要按源主机区分,所有上步copy过来的公钥都要加入,还要把自己的公钥加入) 7、设置authorized_keys权限 chmod 600 authorized_keys 8、把authorized_keys文件copy到其他所有节点的/home/hadoop/.ssh 目录下 执行:scp ~/.ssh/authorized_keyshadoop@ namenodes:~/.ssh/ (注意:加粗的部分一定要按目的主机区分,不同的主机需要修改的) 9、测试是否建立完成 输入命令ssh hadoop@namnodes 敲回车直接过去,不用输入密码就表示建立好了。 (注意:红色部分为主机名需要根据登入的不同的主机修改,这里每两个都登录一下,测试一下)
安装jdk这里就不在描述如何安装jdk了,但是要注意把jdk的JAVA_HOME配置在系统的PATH中 安装zookeeper 使用hadoop用户,先配置的bigdata-03 下载http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 解压1、上传zookeeper-3.4.6.tar.gz到/home/hadoop 目录下 2、解压 tar -zxvf zookeeper-3.4.6.tar.gz 配置1、将~/zookeeper-3.4.6/conf目录下的zoo_sample.cfg重新命名为zoo.cfg cpzoo_sample.cfg zoo.cfg 2、修改zoo.cfg文件 修改: dataDir=/home/hadoop/zookeeper-3.4.6/data 添加: server.1=datanode64:2888:3888 server.2=datanode68:2888:3888 server.3=datanode71:2888:3888 3、创建数据目录 mkdir/home/hadoop/zookeeper-3.4.6/data 4、设置myid 创建文件 vi /home/hadoop/zookeeper-3.4.6/data/myid 在文件添加 1 (这个自要更具第二步中配置的serever后面的主机名对应) 在其他机器上安装 1、copy目录 scp -r /home/hadoop/zookeeper-3.4.6/ hadoop@ datanode68:/home/hadoop/ (注意:修改主机名,把zookeeper copy到其他几个主机上) 2、修改myid
主机名 | myid | datanode64 | 1 | datanode68 | 2 | datanode71 | 3 | 启动进入每台主机的 cd ~/zookeeper-3.4.6/bin 启动zookeeper ./zkServer.sh start 检查是否启动 ./zkServer.sh status
安装hadoop下载安装包:http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz 安装namenodem节点1、把安装包hadoop-2.6.0.tar.gz 传到/home/hadoop目录下 2、tar开安装包 ,执行命令:tar -zxvf hadoop-2.6.0.tar.gz 3、配置hadoop的环境变量 A、切换到root用户,进入/etc/profile.d 目录 B、在这个目录下新建文件,执行命令:touch hadoop-2.6.0.sh C、在文件中写入如下配置数据 HADOOP_HOME=/home/hadoop/hadoop-2.6.0 export HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_LOG_DIR=$HADOOP_HOME/logs export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native exportHADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" export HADOOP_BIN=$HADOOP_HOME/bin export PATH=$HADOOP_BIN:$PATH D、切换到hadoop用户使配置生效,执行命令:source /etc/profile E、执行命令:echo$HADOOP_HOME 如果看见输出为/home/hadoop/hadoop-2.6.0表示配置成功 4、建立数据存储目录(提示这步需要用root用户,安装开发环境可以不需要这步) 默认hadoop数据存放在HADOOP_HOME/data目录,需要通过软连接的形式把它链接到空间更大的地方,如果是测试可以不用,如果不用就直接在HADOOP_HOME目录下mkdir一个data目录 A、在大空间位置建立目录mkdir data 进入data目录在执行mkdir hadoop B、修改文件/data的own,执行命令: chown -R hadoop:hadoopgrp /data C、建立软连接 执行命令:ln -s /data/hadoop /home /hadoop/ hadoop-2.6.0/data 5、配置slaves 配置文件在$HADOOP_HOME/etc/hadoop下 在slaves文件中配置datanode的ip地址格式如下 datanode64 datanode68 datanode71
6、配置core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://masters</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-2.6.0/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>datanode64:2181,datanode68:2181,datanode71:2181</value> </property> |
7、配置hdfs‐site.xml <property> <name>dfs.nameservices</name> <value>masters</value> </property> <property> <name>dfs.ha.namenodes.masters</name> <value>namenodem,namenodes</value> </property> <property> <name>dfs.namenode.rpc-address.masters.namenodem</name> <value>namenodem:50090</value> </property> <property> <name>dfs.namenode.http-address.masters.namenodem</name> <value>namenodem:50070</value> </property> <property> <name>dfs.namenode.rpc-address.masters.namenodes</name> <value>namenodes:50090</value> </property> <property> <name>dfs.namenode.http-address.masters.namenodes</name> <value>namenodes:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://datanode64:8485;datanode68:8485;datanode71:8485/masters</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/hadoop-2.6.0/journal</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <property> <name>dfs.client.failover.proxy.provider.masters</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> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> |
8、配置mapred‐site.xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> |
9、配置yarn-site.xml
<property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>RM_HA_ID</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>namenodem</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>namenodes</value> </property> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> <property> <name>yarn.resourcemanager.zk-address</name> <value>datanode64:2181,datanode68:2181,datanode71:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> |
10、配置slaves文件 datanode64 datanode68 datanode71 |
安装其他节点这里的其他节点指namnodeslave和datanode 1、把上面配置好的hadoop 打包 用hadoop用户在/home/hadoop目录下 tar -zcvfhadoop-2.6.0-run.tar.gz hadoop-2.6.0 2、copy到其他节点 scp~/hadoop-2.6.0-run.tar.gz hadoop@datanode64:~/ 3、在各个节点tar开包 tar-zxvf hadoop-2.6.0-run.tar.gz 4、按照nodename节点的配置方式配置环境变量
启动journalnode
1、 启动journalnode(在datanode64、datanode68、datanode71) 进入:/home/hadoop/hadoop-2.6.0/sbin 执行命令:./hadoop-daemon.shstart journalnode
格式化 hdfs1、在namenode master格式化 配置好后在namenodem机器上进入hadoop的bin目录格式化文件系统(一定要) hdfs namenode -format #格式化文件系统 2、格式化namenode slave 把master上格式化的数据copy到slave上 scp–r /home/hadoop/hadoop-2.6.0/tmp hadoop@namenodes:/home/hadoop/hadoop-2.6.0/tmp 格式化ZK在namnodem上执行: hdfs zkfc -formatZK 启动hadoop1、 启动hdfs(在namenodem上) 在/home/hadoop/hadoop-2.6.0/sbin下 start-dfs.sh 2、 启动yarn(在namenodem上) 在/home/hadoop/hadoop-2.6.0/sbin下 ./start-yarn.sh 3、 启动yarn standby . /yarn-daemon.sh start resourcemanager 4、用jps命令检查每个节点对应的进程是否启动,进程参考网络规划表中的进程
在浏览器中输入 http://172.29.31.74:50070/dfshealth.html 进入页面表示成功 在浏览器中输入 http://172.29.31.74:8088/cluster 进入页面表示yarn安装成功
安装mysql请在网上寻找安装文档 Hive安装下载安装包http://apache.fayea.com/apache-mirror/hive/stable/apache-hive-1.1.0-bin.tar.gz 安装1、上传包 上传hive包到nodenames上(我是这样规划的,在其他节点也可以)到 /home/hadoop上 2、解压 tar–zxvf apache-hive-1.1.0-bin.tar.gz 3、重命名包 mv apache-hive-1.1.0-bin hive-1.1.0 配置1、 配置环境变量 进入环境变量配置目录,这里需要切换到root用户:cd /etc/profile.d 创建配置文件:touchhive-1.1.0.sh 打开配置文件:vi hive-1.1.0.sh 配置环境变量: #set hive environment HIVE_HOME=/home/hadoop/hive-1.1.0 PATH=$HIVE_HOME/bin:$PATH CLASSPATH=$CLASSPATH:$HIVE_HOME/lib export HIVE_HOME export PATH export CLASSPATH |
保存退出::wq! 切换到hadoop用户立即生效:source /etc/profile 2、 配置hive-env.sh 进入配置目录: cd /home/hadoop/hive-1.1.0/conf 打开配置文件hive-env.sh,配置 # Set HADOOP_HOME to point to a specific hadoop install directory HADOOP_HOME=/home/hadoop/hadoop-2.6.0 # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/home/hadoop/hive-1.1.0/conf |
3、 配置hive-site.xml 创建配置文件 cp hive-default.xml.template hive-site.xml |
在同上的目录下 <property> <name>hive.metastore.warehouse.dir</name> <value> hdfs://masters:50090/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> <property> <name>hive.exec.scratchdir</name> <value> hdfs://masters:50090/hive/scratchdir</value> <description>Scratch space for Hive jobs</description> </property> <property> <name>hive.querylog.location</name> <value>/home/hadoop/ hive-1.1.0/logs</value> <description> Location of Hive run time structured log file </description> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://172.29.31.66:3306/hive_metadata?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>××××××</value> <description>password to use against metastore database</description> </property>
<property> <name>hive.exec.local.scratchdir</name> <value>/home/hadoop/hive-1.1.0/local/${system:user.name}</value> <description>Local scratch space for Hive jobs</description> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/home/hadoop/hive-1.1.0/local/${hive.session.id}_resources</value> <description>Temporary local directory for added resources in theremote file system.</description> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>/home/hadoop/hive-1.1.0/logs/operation_logs</value> <description>Top leveldirectory where operation logs are stored if logging functionality isenabled</description> </property>
|
在hive-1.1.0下创建local目录
4、 配置log4j 在同上的目录下 创建配置文件: cp hive-exec-log4j.properties.template hive-exec-log4j.properties cp hive-log4j.properties.template hive-log4j.properties |
修改上面两个文件中的配置 hive.log.dir=/home/hadoop/ hive-1.1.0/logs log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter |
注意如果没有logs目录就建立一个 执行命令 mkdir /home/hadoop/hive-1.1.0/logs |
添加驱动包1、下载驱动包 我用的mysql是mysql 5.6.15 版本,配套的jdbc是mysql-connector-java-5.1.24-bin.jar 这个jar在网上一大把,自己在网上下载就可以了,一定要根据mysql版本选择配套的版本 2、添加驱动包 把驱动包放到 $HIVE_HOME/lib 目录下 3、修改hadoop的库文件 在$HADOOP_HOME/share/hadoop/yarn/lib下备份jline-0.9.94.jar mv jline-0.9.94.jar jline-0.9.94.jar.bak |
Copy高版本的jline cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME /share/hadoop/yarn/lib |
启动执行如下命令:
|