大数据平台搭建 过程

master : 169.254.7.160
worker1 : 169.254.7.161
worker2 : 169.254.7.162
worker3 : 169.254.7.163
worker4 : 169.254.7.164
worker5 : 169.254.7.165

master: namenode,datanode,spark master,worker,hbase
worker1:datanode,worker,hbase
worker2:datanode,worker,hbase
worker3:datanode,worker,kafka,zk,hbase
worker4:datanode,worker,kafka,zk,hbase
worker5:datanode,worker,kafka,zk,hbase

ntpd 对时服务请见:http://acooly.iteye.com/blog/1993484

所用到的安装压缩包都在/home/setups 中 都可以在笔者的云盘中下载。

  • 前提:
  • 规划好hosts
  • ssh免密登录
  • java、scala安装并配置环境变量
# 解压hadoop安装包
tar zxvf /home/setups/hadoop-2.7.3.tar.gz -C /usr/local
# 将/usr/local/hadoop-2.7.3 加入 HADOOP_HOME环境变量
# $HADOOP_HOME/bin 和 $HADOOP_HOME/sbin 加入环境变量


# 修改 $HADOOP_HOME/etc/hadoop/core-site.xml
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/bigdata/hadoop/tmp</value>
</property>
# 修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=java的环境变量

export HADOOP_HEAPSIZE=8192 # 8G
export HADOOP_NAMENODE_HEAPSIZE=4096  # 4G

export HADOOP_NAMENODE_OPTS="-Xms512m -Dcom.sun.management.jmxremote -D..."
export HADOOP_DATANODE_OPTS="-Xms512m -Dcom.sun.management.jmxremote -D..."

export HADOOP_LOG_DIR=/home/bigdata/hadoop/log

export HADOOP_PID_DIR=/home/bigdata/hadoop/pids

# 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml
<!-- dfs.datanode.max.xcievers -->
<property>
    <name>dfs.datanode.max.transfer.threads</name>
    <value>4096</value>
</property>

<!-- http://product.hubspot.com/blog/g1gc-tuning-your-hbase-cluster -->

<!-- http://www.cnblogs.com/liuming1992/p/4936655.html -->

<!-- https://community.hortonworks.com/content/supportkb/49619/hbase-settings-to-stop-major-compaction-during-pea.html -->
<property>
    <name>dfs.client.read.shortcircuit</name>
    <value>true</value>
</property>

<property>
    <name>dfs.domain.socket.path</name>
    <value>/var/run/hadoop-hdfs/dn._PORT</value>
</property>

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/bigdata/hadoop/hdfs/name</value>
</property>

<property>
    <name>dfs.datanode.handler.count</name>
    <value>64</value>
</property>

<property>
    <name>dfs.namenode.handler.count</name>
    <value>64</value>
</property>

<property>
    <name>dfs.datanode.name.dir</name>
    <value>/home/bigdata/hadoop/hdfs/data</value>
</property>

# 修改$HADOOP_HOME/etc/hadoop/mapred-env.sh

# export JAVA_HOME=java的环境变量
export HADOOP_MAPRED_LOG_DIR=/home/bigdata/hadoop/log
export HADOOP_MAPRED_PID_DIR=/home/bigdata/hadoop/pids

# 修改$HADOOP_HOME/etc/hadoop/slaves
master
worker1
worker2
worker3
worker4
worker5

# 修改$HADOOP_HOME/etc/hadoop/yarn-env.sh
# 在if中设置 JAVA_HOME=java的环境变量
# 在if中设置 YARN_LOG_DIR="/home/bigdata/hadoop/log"

# 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

# 将环境变量文件同步到各worker。
# 在各worker中 是环境变量生效
# 将/usr/local/hadoop-2.7.3 目录文件同步到其他worker中
# scp -r /usr/local/hadoop-2.7.3 worker1:/usr/local/ 
# ...
# 将配置的对应目录也同步下,本例的数据文件都配置在/home/bigdata/hadoop中了。
# scp -r /home/bigdata/hadoop worker1:/home/bigdata


# 在每个节点执行如下命令,以连接 libhadoop.so  到jre中
mkdir $JAVA_HOME/jre/amd64 && ln -s /usr/local/hadoop-2.7.3/lib/native/libhadoop.so $JAVA_HOME/jre/amd64/libhadoop.so

# 在每个节点执行如下命令
mkdir -p /var/run/hadoop-hdfs

# 在master中格式化hdfs
hdfs namenode -format
# 启动hdfs 
start-dfs.sh
# 确认master jps有 NameNode进程
# 浏览器访问master:50070 有界面展示出来,且展示的datanode个数和配置的一致。

# 启动yarn
start-yarn.sh
# 确认master jps有 ResourceManager进程
# 浏览器访问master:50070 有界面展示出来,且展示的datanode个数和配置的一致。

# 日志也很重要
mr-jobhistory-daemon.sh start historyserver

# hdfs 和 yarn就算安装成功了。
# 安装spark,其中spark-2.1.0-bin-hadoop2.7.tgz 存放在/home/setups 目录下
# 压缩包解压至/usr/local
tar zxvf /home/setups/spark-2.1.0-bin-hadoop2.7.tgz -C /usr/local

# 将spark-2.1.0-bin-hadoop2.7 加入 SPARK_HOME环境变量
# $SPARK_HOME/bin 加入环境变量并使环境变量生效


# 修改$SPARK_HOME/conf/slaves
master
worker1
worker2
worker3
worker4
worker5

# 复制spark默认配置模版,用来简化配置
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
# 配置开启日志输出
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/logs/spark/event_log/history

# 配置的目录需要在hdfs中创建下。
hdfs dfs -mkdir -p /logs/spark/event_log/history

# 复制spark默认配置模版,用来简化配置
cp spark-env.sh.template spark-env.sh

export SPARK_WORKER_DIR=/home/bigdata/spark/worker

export JAVA_HOME=java的环境变量
export SCALA_HOME=scala的环境变量

export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.3/etc/hadoop/
export SPARK_MASTER_IP=169.254.7.160

export SPARK_LOG_DIR=/home/bigdata/spark/logs

export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:$HADOOP_HOME/lib/native  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native  
export SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:$HADOOP_HOME/lib/native 

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=50 -Dspark.history.fs.logDirectory=hdfs://master:9000/logs/spark/event_log/history"

# 新建
# 将环境变量文件同步到各worker。
# 在各worker中 是环境变量生效
# 将/usr/local/spark-2.1.0-bin-hadoop2.7 目录文件同步到其他worker中
# scp -r /usr/local/spark-2.1.0-bin-hadoop2.7 worker1:/usr/local/ 
# ...
# 将配置的对应目录也同步下,本例的数据文件都配置在/home/bigdata/spark中了。
# scp -r /home/bigdata/spark worker1:/home/bigdata

# 启动spark
cd $SPARK_HOME && sbin/start-all.sh

# 也可以在各节点 启动slave
cd $SPARK_HOME/sbin && ./start-slave.sh -h master spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker1 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker2 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker3 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker4 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker5 spark://master:7077

# 确认master jps有 Master 和 Worker 进程
# 浏览器访问master:8080 有界面展示出来,且展示的workers个数和配置的一致。

# 启动日志
cd $SPARK_HOME && sbin/start-history-server.sh

至此spark standalone模式安装完成。
# 按照规划,zookeeper是在worker3、worker4、worker5上,此处我们在worker3安装第一台

# 新建zookeeper的数据目录
mkdir -p /home/bigdata/zookeeper/data
# 准备zookeeper的日志目录
mkdir -p /home/bigdata/zookeeper/log

# 安装zookeeper
tar zxvf /home/setups/zookeeper-3.4.9.tar.gz -C /usr/local
cd /usr/local/zookeeper-3.4.9/conf
# 复制zookeeper默认配置模版,用来简化配置
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir=/home/bigdata/zookeeper/data
dataLogDir=/home/bigdata/zookeeper/log

server.3=worker3:2888:3888
server.4=worker4:2888:3888
server.5=worker5:2888:3888

# 同步zookeeper安装目录
scp -r /usr/local/zookeeper-3.4.9 worker4:/usr/local/
scp -r /usr/local/zookeeper-3.4.9 worker5:/usr/local/

# 同步zookeeper数据目录
scp -r /home/bigdata/zookeeper worker4:/home/bigdata/
scp -r /home/bigdata/zookeeper worker5:/home/bigdata/

# 登录worker3,修改worker3的myid
echo "3" >> /home/bigdata/zookeeper/data/myid

# 登录worker4,修改worker4的myid
echo "4" >> /home/bigdata/zookeeper/data/myid

# 登录worker5,修改worker5的myid
echo "5" >> /home/bigdata/zookeeper/data/myid

# 以上zookeeper安装步骤顺序不能打乱。

# 将ZOOKEEPER_HOME配置进环境变量

# 在worker3~worker5中启动zk
zkServer.sh start $ZOOKEEPER_HOME/conf/zoo.cfg

# 确认各节点的状态
zkServer.sh status
# 是leader或是follower 就OK


# zookeeper安装完毕
# 安装kafka

# 准备kafka日志目录
mkdir -p /home/bigdata/kafka/log/

# 解压安装包
tar zxvf /home/setups/kafka_2.11-0.10.1.0.tgz -C /usr/local/

cd /usr/local/kafka_2.11-0.10.1.0/config

# 修改配置文件server.properties 
vi server.properties

# 日志保存时间(小时)
log.retention.hours=720

# 和本次搭建无关,存做记录。内网按地址访问时不通时,配置这个参数
# listeners = PLAINTEXT://192.168.8.123:8689

log.dirs=/home/bigdata/kafka/log/ # 配置目录
# 使用外部的zk,上面已经搭建过了
zookeeper.connect=worker3:2181,worker4:2181,worker5:2181

# 日志刷新
log.flush.interval.messages=10000 # 每10000条记录溢出到磁盘
log.flush.interval.ms=1000 # 每秒溢出到磁盘

log.retention.bytes=10737418244 # 每个文件保留1G 

# 修改配置文件server.properties 完成

# 复制kafka到worker4和worker5
scp -r /usr/local/kafka_2.11-0.10.1.0 worker4:/usr/local/
scp -r /usr/local/kafka_2.11-0.10.1.0 worker5:/usr/local/

# 复制kafka 目录到worker4和worker5
scp -r /home/bigdata/kafka worker4:/home/bigdata
scp -r /home/bigdata/kafka worker5:/home/bigdata

# 修改worker3上的broker.id
vi /usr/local/kafka_2.11-0.10.1.0/config/server.properties
broker.id=3

# 修改worker4上的broker.id
vi /usr/local/kafka_2.11-0.10.1.0/config/server.properties
broker.id=4

# 修改worker5上的broker.id
vi /usr/local/kafka_2.11-0.10.1.0/config/server.properties
broker.id=5

# 将KAFKA_HOME配置进环境变量

# 在worker3~worker5上启动kafka
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

# 新建一个topic测试下
./kafka-topics.sh --create --zookeeper worker3:2181,worker3:2181 --replication-factor 2 --partitions 1 --topic
 test

# 安装hbase

# 准备hbase 日志目录
mkdir -p /home/bigdata/hbase/logs

# 解压缩hbase安装包
tar zxvf /home/setups/hbase-1.2.4-bin.tar.gz -C /usr/local/

cd /usr/local/hbase-1.2.4/conf

# 修改hbase-env.sh 
export JAVA_HOME=java的环境变量

# 取消jdk8中不在支持的jvm参数,主要是删除PermSize和MaxPermSize参数
# hbase g1 gc 的 博文:
# http://product.hubspot.com/blog/g1gc-tuning-your-hbase-cluster
export HBASE_MASTER_OPTS= 
export HBASE_REGIONSERVER_OPTS=

# 修改日志目录
export HBASE_LOG_DIR=/home/bigdata/hbase/logs

# 不使用hbase内置的zookeeper
export HBASE_MANAGES_ZK=false
# hbase-env.sh 修改 完毕

# 修改hbase-site.xml 
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase/data</value>
</property>

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>worker3:2181,worker4:2181,worker5:2181</value>
</property>

<property>
    <name>hbase.hstore.blockingStoreFiles</name>  
    <value>2100000000</value>  
</property>

<property>  
     <name>hbase.hregion.max.filesize</name>  
     <value>536870912000</value>  
 </property>

<property>  
    <name>hbase.hregion.majorcompaction</name>  
    <value>0</value>  
</property>

<!-- http://koven2049.iteye.com/blog/1006436 -->
<property>  
    <name>hbase.hregion.memstore.block.multiplier</name>  
    <value>8</value>//内存充足确保不会产生OOM的情况下,调大此值  
</property>  

<property>  
    <name>hbase.server.thread.wakefrequency</name>  
    <value>100</value>//减少睡眠等待时间,默认值为10000  
</property>  

<!-- 这一组说明非高峰时间段 -->
<!-- https://community.hortonworks.com/articles/52616/hbase-compaction-tuning-tips.html -->
<!-- https://community.hortonworks.com/content/supportkb/49619/hbase-settings-to-stop-major-compaction-during-pea.html -->
<property>  
    <name>hbase.offpeak.start.hour</name>  
    <value>2</value>
</property>  

<property>  
    <name>hbase.offpeak.end.hour</name>  
    <value>3</value>
</property>  


<!-- hbase.dfs.client.read.shortcircuit.buffer.size 短路缓冲大小 -->

# 修改 /usr/local/hbase-1.2.4/conf/regionservers 
# 理论上和 $HADOOP_HOME/etc/hadoop/slaves 文件内容一样
rm -f /usr/local/hbase-1.2.4/conf/regionservers && cp $HADOOP_HOME/etc/hadoop/slaves regionservers 

# 复制hbase 目录到worker1~worker5
scp -r /usr/local/hbase-1.2.4 worker1:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker2:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker3:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker4:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker5:/usr/local 

# 复制hbase日志目录到worker1~worker5
scp -r /home/bigdata/hbase worker1:/home/bigdata/
scp -r /home/bigdata/hbase worker2:/home/bigdata/
scp -r /home/bigdata/hbase worker3:/home/bigdata/
scp -r /home/bigdata/hbase worker4:/home/bigdata/
scp -r /home/bigdata/hbase worker5:/home/bigdata/

# 设置 HBASE_HOME 环境变量,同步到worker1~worker5后。source /etc/profile使环境变量生效

# 启动hbase测试

start-hbase.sh

# 浏览器访问master:16010 有界面展示出来,且展示的server个数和配置的一致。

# hbase 巨量数据插入性能调整:
http://joshuasabrina.iteye.com/blog/1798239

# 安装 Hive2
# 解压压缩包
tar zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local/

# 设置 HIVE_HOME 环境变量
# 使环境变量生效。

# 在hdfs中创建 hive相应的目录并赋权
hdfs dfs -mkdir       /tmp
hdfs dfs -mkdir -p     /user/hive/warehouse
hdfs dfs -chmod g+w   /tmp
hdfs dfs -chmod g+w   /user/hive/warehouse

cd $HIVE_HOME/conf/
cp hive-log4j2.properties.template hive-log4j2.properties
# 修改 hive-log4j2.properties
vi hive-log4j2.properties
# 修改hive的日志输出目录
property.hive.log.dir=/home/bigdata/hive/logs
# 修改 hive-log4j2.properties 完成

cp hive-env.sh.template hive-env.sh
# 修改hive-env.sh
HADOOP_HOME=/usr/local/hadoop-2.7.3


# 修改hive-env.sh完成

cp hive-default.xml.template hive-site.xml
# 修改hive-site.xml,主要配置hive的metadata为mysql
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/apache_hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
        <value>这里填用户名</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>这里填密码</value>
    </property>

<!-- 将/tmp目录下的所有配置都改成/home/bigdata/hive下,这里不一一列出了 -->
# 将mysql-connector.jar 放入$HIVE_HOME/lib下
cp mysql-connector.jar $HIVE_HOME/lib/

# 初始化 hive元数据 ,保存至mysql,这一步一定要在 上面都完成之后做,笔者做的时候,没有设置hadoop_home,访问的fs.defaultFS是8020,郁闷了好久。
schematool -initSchema -dbType mysql

# 确认是否成功
hive 
# 能进入命令行即为成功。

# 后台启动
hiveserver2 start & 

# 安装zeppelin
tar zxvf zeppelin-0.7.0-bin-all.tgz -C /usr/local/

cd /usr/local/zeppelin-0.7.0-bin-all/conf/

# 从模版创建 环境配置
cp zeppelin-env.sh.template zeppelin-env.sh
# 编辑 zeppelin-env.sh
vi zeppelin-env.sh

export ZEPPELIN_LOG_DIR=/home/bigdata/zeppelin/logs
export ZEPPELIN_PID_DIR=/home/bigdata/zeppelin/pid
export ZEPPELIN_WAR_TEMPDIR=/home/bigdata/zeppelin/war
export ZEPPELIN_NOTEBOOK_DIR=/home/bigdata/zeppelin/notebook

export JAVA_HOME=
export MASTER=spark的master,如spark://master:7077
export HBASE_HOME=
export HBASE_CONF_DIR=

# 编辑 zeppelin-env.sh 完成

# 从模版创建 配置
cp zeppelin-site.xml.template zeppelin-site.xml
vi zeppelin-site.xml
<!-- 修改端口配置 -->
<property>
    <name>zeppelin.server.port</name>
    <value>7070</value>
</property>
# 将ZEPPELIN_HOME加入环境变量,并使生效

zeppelin-daemon.sh start # 启动
zeppelin-daemon.sh stop # 停止

# kudu 安装
# 使用rpm包安装
# rpm -ivh 各种包名,如:
# 先在 master 节点安装
rpm -ivh kudu-debuginfo-1.2.0+cdh5.10.0+0-1.cdh5.10.0.p0.56.el6.x86_64.rpm
一共有6个包。

# 新增目录
mkdir -p /home/kudu/master/log
mkdir -p /home/kudu/tserver/log
# 设置权限
chown -R kudu:kudu /home/kudu

# 配置目录
# master 配置设置,各节点相同
vi /etc/kudu/conf/master.gflagfile
 # 修改如下内容
--fs_wal_dir=/home/kudu/master/wal
--fs_data_dirs=/home/kudu/master/data
--default_num_replicas=1 //设置备份数 不设置默认为3
--master_addresses=master:7051 # 多个master用逗号分隔,在这里配置

vi /etc/default/kudu-master # 各节点都不同
export FLAGS_log_dir=/home/kudu/master/log
export FLAGS_rpc_bind_addresses=master:7051 # 这里只配自己的RPC端口
# master 配置设置完成

# tserver 配置设置 ,各节点相同
vi /etc/kudu/conf/tserver.gflagfile
# 修改如下内容
--fs_wal_dir=/home/kudu/tserver/wal
--fs_data_dirs=/home/kudu/tserver/data
--tserver_master_addrs=master:7051 # 绑定master节点	

vi etc/default/kudu-tserver # 各节点都不同
export FLAGS_log_dir=/home/kudu/tserver/log
export FLAGS_rpc_bind_addresses=master:7050 
# tserver 配置设置完成

# 启动  或  关闭 
service kudu-master start | stop
service kudu-tserver start | stop

# 启动后,可以在 master:8051中打开浏览器看到对应的web控制台。

转载于:https://my.oschina.net/corleone/blog/837844

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值