1、系统与软件准备
- 系统:centos7
- 软件:
- hadoop-2.7.2.tar.gz,请勿选择src版本,否则需要自行编译
- jdk-7u79-linux-x64.tar.gz
- scala-2.10.3.tgz
- spark-1.6.1-bin-hadoop2.6.tgz,选择hadooppre-built版本,否则需要安装后编译
- zookeeper-3.3.6.tar.gz
# tar xvzf jdk-7u45-linux-x64.tar.gz -C/usr/local
# cd /usr/local
# ln -s jdk1.7.0_45 jdk
# vim /etc/profile 加入以下内容
# source /etc/profile
2. Scala安装
# tar xvzf scala-2.10.3.tgz -C/usr/local
# cd /usr/local
# ln -s scala-2.10.3 scala
# vim /etc/profile 加入以下内容
3. SSH免登录配置
#ssh-keygen
在node1下生成的密钥对:id_rsa和id_rsa.pub,默认存储在"~/.ssh"目录下,包括两个文件,id_rsa和id_rsa.pub,分别为私钥和公钥
将公钥写入信任文件中
#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后修改authorized_keys文件的权限
#chmod 644 ~/.ssh/authorized_keys
node1中的authorized_keys拷贝至其余节点的~/.ssh目录下,修改SSH配置文件"/etc/ssh/sshd_config"的下列内容(这步可以省略)
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
#service sshd restart
重启SSH服务
4.主机名设置
# vim /etc/hosts
#vi /etc/sysconfig/network
HOSTNAME=node1/node2/node3
5. Zookeeper安装
# mkdir –p /root/data/hadoop/zookeeper/{data,logs}
两个文件夹都需要预先建立好,否则会运行时会报错
# vim /usr/local/zookeeper/conf/zoo.cfg
接着在/root/data/hadoop/zookeeper/data下分别建立名为myid文件,文件内容为上述zoo.cfg中IP地址对应server.[number]中的number
node1 : echo 1 > /root/data/hadoop/zookeeper/data/myid
node2 : echo 2 > /root/data/hadoop/zookeeper/data/myid
node3 : echo 3 > /root/data/hadoop/zookeeper/data/myid
执行zkServer.sh start启动zookeeper,相应zkServer.shstop退出,zkServer.sh status查看状态
分别在node1,node2,node3执行zkServer.sh start,然后通过zkServer.sh status查看状态,如果发现每个node当前状态标记为follower或者leader,那么测试通过
6. Hadoop(HDFS HA)集群部署
# tar xvzf hadoop-2.2.0.tgz -C/usr/local
# cd /usr/local
# ln -s hadoop-2.2.0 hadoop
#vim /etc/profile
接下来有8个配置文件需要修改,配置文件均在$HADOOP_HOME/etc/hadoop/目录下
- hadoop-env.sh, mapred-env.sh, yarn-env.sh中加入以下内容
2,core-site.xml
3, hdfs-site.xml
4,mapred-site.xml
5,yarn-site.xml
6,slaves(此处如果超过一个节点,不要填主机名,要填IP)
接下来依次执行以下命令:
a) 在namenode1上执行,创建命名空间
# hdfs zkfc -formatZK
b) 在对应的节点上启动日志程序journalnode
# cd /usr/local/hadoop && ./sbin/hadoop-daemon.sh start journalnode
c) 格式化主NameNode节点(node1)
# hdfs namenode -format
d) 启动主NameNode节点
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start namenode
e) 格式备NameNode节点(node2)
# hdfs namenode -bootstrapStandby
f) 启动备NameNode节点(node2)
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start namenode
g) 在两个NameNode节点(node1、node2)上执行
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start zkfc
h) 启动所有的DataNode节点(node3)
# cd /usr/local/hadoop && sbin/hadoop-daemon.sh start datanode
i) 启动Yarn(node1)
# cd /usr/local/hadoop &&sbin/start-yarn.sh
7,Spark安装与配置
# tar xvzf spark-0.9.0-incubating.tgz-C/usr/local
# cd /usr/local
# ln -s spark-0.9.0-incubating spark
# vim /etc/profile
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
# source /etc/profile
# cd /usr/local/spark/conf
# mkdir -p /data/spark/tmp
接下来,配置两个配置文件,文件在SPARK_HOME/conf/目录下
1,spark-env.sh
2,slaves(多个节点不能是主机名)
分别进入每个节点的/usr/local/spark/sbin目录下,主节点执行#./start-master.sh,子节点执行#./start-slaves.sh,或者在主节点直接执行sbin/start-all.sh
8,测试流程
1,进程运行情况测试
在每个节点执行#jps指令,若输出结果为以下内容,则测试通过,否则进入/usr/local/hadoop/logs或者/usr/local/spark/logs目录下查看log文件进行检查
主namenode
从namenode
datanode节点
其中Master和Worker是Spark相应进程
Hmaster和HregionServer为Hbase相应进程(这里不需要)
DFSZKFailoverController为Zookeeper相应进程
ResourceManager和NodeManager为Yarn相应进程
其余为Hadoop相应进程
2,HDFS测试
在任意节点下执行
#hadoopfs –mkdir /test
#hadoopfs –ls /
#hadoopfs –put /test/test.txt
若不报错,则说明测试通过
3,Spark测试
1) Spark本地模式测试(Spark Standalone)
#run-exampleorg.apache.spark.examples.SparkPi 100
#spark-submit--class org.apache.spark.examples.JavaWordCount --master spark://node1:6066 --deploy-modecluster /usr/local/spark/lib/spark-examples-1.6.1-hadoop2.6.0.jar ./test.txt
在http://node1:4040中观察输出结果
#spark-submit--class org.apache.spark.examples.JavaWordCount --master spark://node1:6066 --deploy-modecluster /usr/local/spark/lib/spark-examples-1.6.1-hadoop2.6.0.jar hdfs://[hdfsnamespace]/test/test.txt
在http://node1:4040中观察输出结果
2) Spark集群模式测试(Spark on Yarn)
#spark-submit --class org.apache.spark.examples.JavaWordCount--master yarn --deploy-mode client/usr/local/spark/lib/spark-examples-1.6.1-hadoop2.6.0.jar hdfs://[hdfsnamespace]/test/test.txt
#spark-submit --classorg.apache.spark.examples.JavaWordCount --master yarn --deploy-mode cluster/usr/local/spark/lib/spark-examples-1.6.1-hadoop2.6.0.jar hdfs://[hdfsnamespace]/test/test.txt
可通过http://node1:80进入UI界面查看