本文就是一些个人安装 Apache Hadoop集群(包括其一些生态组件)时的一些过程。
确定集群数,最好为奇数台
修改hosts文件映射(最好保证机器的ip为静态ip)
上传Hadoop,jdk压缩包,并解压
配置环境变量
关闭防火墙
# 查看防火墙状态
chkconfig iptables --list
# 永久关闭防火墙
chkconfig iptables off
安装ssh,并设置无秘登录
修改Hadoop的配置文件($HADOOP_HOME/etc/hadoop/)
修改Hadoop-env.sh文件
export JAVA_HOME=${JAVA_HOME} # 将文件中的此行换成下一行
export JAVA_HOME=/home/phoenix/apps/jdk
修改hdfs-site.xml文件
<property>
<!--配置系统的数据自动备份的数量,默认三份-->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<!--设置namenode的ip及端口号,hadoop2.0之前默认9000.之后默认8020端口-->
<name>dfs.namenode.rpc-address</name>
<value></value>
</property>
<property>
<!--设置namenode的文件目录,默认为${hadoop.tmp.dir}/dfs/name-->
<name>dfs.namenode.name.dir</name>
<value></value>
</property>
<property>
<!--HDFS的datanode的文件存储目录,默认为${hadoop.tmp.dir}/dfs/data-->
<name>dfs.datanode.data.dir</name>
<value></value>
</property>
<property>
<!--HDFS的权限,默认为true,即用户连接时需要检查其权限-->
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
修改core-site.xml文件
<property>
<!--设置hdfs所存放的文件目录。默认在/tmp/hadoop-${user.name}文件中-->
<name>hadoop.tmp.dir</name>
<value></value>
</property>
将mapred-site.xml.template文件更名为mapred-site.xml,并修改配置
<property>
<!--设置mr的执行框架,默认为local本地执行-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改yarn-site.xml文件
<property>
<name>yarn.nodemanager.aux-services</name>
<value></value>
<!--<value>mapreduce_shuffle</value>-->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
修改slaves文件
添加要作为从节点的主机名(要保证该主机名能够映射成ip地址)或者ip
slave1
slave2
...
为slave设置配置信息(此处为了简略,将主机的配置信息发送到从节点)
格式化集群
hdfs namenode -format
启动/停止集群
#开启集群
start-dfs.sh
#开启yarn
start-yarn.sh
#关闭集群
stop-dfs.sh
作为一个集群,当其namenode节点无效时是最为致命的,因而我们需要使其高可用。
上传zookeeper安装包,解压并配置环境变量
修改zookeeper配置${zookeeper_home}/conf下的文件
修改配置文件
修改core-site.xml
<property>
<name>ha.zookeeper.quorum</name>
<description>
A list of ZooKeeper server addresses, separated by commas, that are
to be used by the ZKFailoverController in automatic failover.
</description>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
修改hdfs-site.xml
<!--配置namenode节点,主备-->
<property>
<name>dfs.nameservices</name>
<value></value>
</property>
<property>
<!--EXAMPLENAMESERVICE为${dfs.nameservices}属性值,此项配置为指定主节点与主备节点-->
<name>dfs.ha.namenodes.EXAMPLENAMESERVICE</name>
<value></value>
<description>
The prefix for a given nameservice, contains a comma-separated list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE).
</description>
</property>
<property>
<!--当集群为HA或者联邦集群时,我们必须指定多个主节点-->
<name>dfs.namenode.rpc-address</name>
<value></value>
<description>
RPC address that handles all clients requests. In the case of HA/Federation where multiple namenodes exist, the name service id is added to the name e.g. dfs.namenode.rpc-address.ns1 dfs.namenode.rpc-address.EXAMPLENAMESERVICE The value of this property will take the form of nn-host1:rpc-port.
</description>
</property>
<!--设置共享日志-->
<property>
<!-- namenode间用于共享编辑 日志的journal节点列表 -->
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
</property>
<property>
<!-- journalnode 上用于存放edits日志 的目录 -->
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/phoenix/hadoop/tmp/data/dfs/jn</value>
</property>
<!--开启故障转移-->
<property>
<!-- 是否开启自动故障转移。建议开启,true -->
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--防止脑裂-->
<property>
<!-- HDFS的HA 功能的防脑裂方法。可以是内建的方法(例如shell和sshfence)或者用户定义的方法。 建议使用sshfence(hadoop:9922),括号内的是用户名和 端口,注意,这需要NN的2台机器之间能够免密码登陆 fences是防止脑裂的方法,保证NN中仅一个是Active的,如果2者都是Active的,新的会 把旧的强制Kill。 -->
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<!-- 密钥认证文件-->
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/phoenix/.ssh/id_rsa</value>
</property>
开启zkServer
zkServer.sh start
开启journalNode
hadoop-daemon.sh start journalNode
格式化集群(只有当第一次格式化时采用):
hdfs namenode -format
将第一个结点的与第二个节点同步,有两种实现方法(建议使用第二种):
在namenode节点上格式化zkfc
hdfs zkfc -foormatZK
启动集群
# 启动hdfs
start-dfs.sh
# 启动yarn
start-yarn.sh
# hdfs和yarn 一起启动(不建议使用)
start-all.sh
解压缩hbase的压缩包,并配置相关环境变量
修改hbase-env.sh,增加java_home
修改 regionservers文件,添加regionserver的节点
配置备份主机:在conf文件中创建一个名为backup-master的文件,
修改 hbase-site.xml 文件
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2,slave3,slave4</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/phoenix/apps/zookeeper/tmp</value>
</property>
将Hadoop的配置信息与hbase连接
开启hbase
解压hive的压缩包,并配置相关的环境变量
上传mysql的连接jar包至hive的lib目录中
安装mysql
修改配置文件
修改hive-env.sh
export HADOOP_HOME = /home/phoenix/apps/hadoop
export HIVE_CONF_DIR = /home/phoenix/apps/hive/conf
export HIVE_AUX_JARS_PATH = /home/phoenix/apps/hive/lib
修改hive-site.xml
<!--主要将其默认数据库改为mysql-->
<property>
<name>javax.jdo.option.Multithreaded</name>
<value>true</value>
<description>Set this to true if multiple threads access metastore through JDO concurrently.</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<!--<value>jdbc:derby:;databaseName=metastore_db;create=true</value>-->
<value>JDBC:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<!--<value>org.apache.derby.jdbc.EmbeddedDriver</value>-->
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<!--<value>APP</value>-->
<value>hive</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<!--<value>mine</value>-->
<value>hivepwd</value>
<description>password to use against metastore database</description>
</property>
修改core-site.xml
<property>
<!--任意节点使用 hadoop 集群的代理用户 hadoop 都能访问 hdfs 集群-->
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
修改hdfs-site.xml
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
暂放
暂放
下载上传Kylin压缩包
解压
检查环境变量(Hadoop、Hive、HBase)
配置环境变量
修改时区conf/kelin.properties
kylin.web.timezone=GTM+8
Kafka的可视化工具
下载上传Kafka-eagle压缩包
解压压缩包(该压缩包中含有一个压缩包,也得压缩,建议将里面的那个压缩包拿出)
配置环境变量
KE_HOME=....
PATH=$PATH:$KE_HOME/bin
修改配置文件system-config.properties
kafka.eagle.zk.cluster.alias=cluster1,cluster2
cluster1.zk.list=tdn1:2181,tdn2:2181,tdn3:2181
# 修改offset存储位置kafka1.5之前默认在zk中,之后在kafka的offset主题中
cluster1.kafka.eagle.offset.storage=kafka
cluster2.kafka.eagle.offset.storage=zk
# 修改db
kafka.eagle.driver=org.sqlite.JDBC
kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
kafka.eagle.username=root
kafka.eagle.password=smartloli
ERROR namenode.NameNode: Failed to start namenode.
java.lang.IllegalArgumentException: Does not contain a valid host:port authority: master
格式化没有问题,开启集群的时候连接不上其他节点(连接超时)
当启动zkServer时,显示连接8485端口错误