1.从官网下载hadoop、spark、scala
我的版本:
hadoop-2.7.3.tar.gz
scala-2.11.8.tgz
spark-2.1.0-bin-hadoop2.7.tgz
(注意:spark版本要与scala 版本相互对应)
2.配置host文件
vim/etc/hosts
加入参数(域名加主机名字)
10.20.30.91 wx-k5-30-9110.20.30.92 wx-k5-30-9210.20.30.94 wx-k5-30-94
3.增加用户
groupadd hadoop 添加一个组useradd hadoop -g hadoop 添加用户su hadoop //切换到hadoop用户中
4.配置SSH免密码连入
4.1 输入命令,产生公匙,密匙
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
4.2 产生在用户下的 .ssh目录下面
Id_rsa.pub为公钥,id_rsa为私钥,紧接着将公钥文件复制成authorized_keys文件
cd .ssh/
cp id_rsa.pub authorized_keys
原理:
与之相反,将本地的id_rsa.pub内容拷贝到远程服务器的authorized_keys中
在10.20.30.91 上访问10.20.30.92 无密登录,第一次登录按提示输入yes
ssh 10.20.30.9
5.安装hadoop
5.1 解压安装包
tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz
tar -zxvf hadoop-2.7.3 hadoop.tar.gz
tar -zxvf scala-2.11.8 scala.tgz
5.2 建立安装位置快捷方式
ln -s spark-2.1.0-bin-hadoop2.7 spark
ln -s hadoop-2.7.3 hadoop
ln -s scala-2.11.8 scala
5.3 配置环境变量
vim /etc/profile
export HADOOP_HOME=/opt/sparkgroup/hadoop
export SCALA_HOME=/opt/sparkgroup/scala
export SPARK_HOME=/opt/sparkgroup/spark
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin::$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=/opt/jdk1.7.0_75
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使配置生效
source /etc/profile
5.4配置hadoop
cd $HADOOP_HOME/etc/hadoop
vim slaves
将slave的主机名加入,每行一个主机名
vim core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://wx-k5-30-91:8020</value>
<description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.
</description>
</property>
<property>
<name>fs.trash.interval</name>
<value>360</value>
<description>Number of minutes between trash checkpoints.If zero, the trash feature is disabled.
</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/sparkgroup/hadoop/tmp_${user.name}</value>
<description>A base for other temporary directories.</description>
</property>
</configuration>
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description> 每一个文件的每一个切块,在hdfs集群中都可以保存多个备份(默认3份),在hdfs-site.xml中,dfs.replication的value的数量就是备份的数量. </description>
</property>
<property>
<name>dfs.name.dir</name>
<value>/opt/sparkgroup/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/sparkgroup/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>wx-k5-30-91</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
创建对应的目录
mkdir -p /opt/sparkgroup/hadoop/hdfs/{data,name}
mkdir /opt/sparkgroup/hadoop/tmp
配置hadoop-env.sh
vim hadoop-env.sh
加入:
export JAVA_HOME=/opt/jdk1.7.0_75
初始化Namenode:
hadoop namenode -format
如图中的status为0,说明初始化成功,若为1,则失败
启动hadoop:
$HADOOP_HOME/sbin/start-all.sh
三个服务器全部启动
这里可能出现一个错误:
这个错误解决办法:
(1).系统位数不一样,centos 是32位,你安装hadoop为64位
用ldd命令查看依赖库
ldd libhadoop.so.1.0.0
(2).替换hadoop目录下 lib/native/ 下的文件
下载hadoop-native-64-2.7.0.tar
http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.7.0.tar
下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。操作如下:
tar -x hadoop-native-64-2.4.0.tar -C hadoop/lib/native/
(3).glibc库是2.12版本,而hadoop期望是2.14版本,所以打印警告信息
查看glibc版本
ldd --version
(4).直接在log4j日志中去除告警信息。在/opt/sparkgroup/hadoop/etc/hadoop/log4j.properties文件中添加
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
使用jps命令查看进程
jps -l
在master
在 slaves
注意:
初次使用Hadoop,运行后怎么没有NameNode节点?
解决方法:
1、先运行stop-all.sh
2、格式化namdenode,不过在这之前要先删除原目录,即core-site.xml下配置的<name>hadoop.tmp.dir</name>所指向的目录,删除后切记要重新建立配置的空目录,然后运行hadoop namenode -form
在集群中每一台机器都要一样配置
在此hadoop集群已经配置完毕
6. 配置scala
之前已经将scala 包解压并且配置了环境变量 scala 也配置完成
scala -version
可以看到Scala版本
7.安装spark
上面已经将环境变量配好在这里直接配置spark
cd $SPARK_HOME/conf
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves
vim slaves
加入集群服务器ip或者主机名
vim spark-env.sh 加入
export JAVA_HOME=/opt/jdk1.7.0_75
export SCALA_HOME=/opt/sparkgroup/scala
export SPARK_MASTER_IP=10.20.30.91
export SPARK_LOCAL_IP=10.20.30.91
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
圈住部分注意:集群中每台机器写各自的 local_ip
SPARK_MASTER_IP=10.20.30.91
这个集群中的每一台都写master的ip
配置spark-defaults.conf,该文件为spark提交任务时默认读取的配置文件
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
spark.master spark://master:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/sparkHistoryLogs
spark.eventLog.compress true
spark.history.updateInterval 5
spark.history.ui.port 7777
spark.history.fs.logDirectory hdfs://master:9000/sparkHistoryLogs
启动Spark进程:
$SPARK_HOME/sbin/start-all.sh
jps 查看进程
jps
master:
slaves
至此 spark 环境全部配置完成
运行shell 并测试
$SPARK_HOME/bin/spark-shell --master spark://master:707
在浏览器中输入:10.20.30.91:8020 就可以访问了, 没错的的话会显示三台worker
adoop 集群信息:
10.20.30.91:50070
10.20.30.91:8088
注意:zeppelin教程链接:http://blog.youkuaiyun.com/qq_28767763/article/details/54409245
附录:
部分hdfs命令:
hdfs命令
1、创建test文件夹
hadoop fs -mk /test
bin/hdfs dfs -mkdir /test
2、查看文件夹
hadoop fs -ls /test
3、删除文件夹 rmr 删除文件rm
4、查看磁盘空间
bin/hdfs dfs -df -h /
5、查看文件尾部
bin/hdfs dfs -tail
6、直接存取文件
存文件:
./hdfs dfs -put /home/admin1/桌面/test.txt hdfs://localhost:9000/
取文件:
./hdfs dfs -get hdfs://localhost:9000/test.txt
7、显示文件内容
hadoop fs -cat /hello.txt
8、从本地文件系统中拷贝文件到hdfs路径去
hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/
9、从hdfs拷贝到本地
hadoop fs -copyToLocal /aaa/jdk.tar.gz
具体安装jdk教程
1. 修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
·用文本编辑器打开/etc/profile
·在profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
a. 你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录
b. linux下用冒号“:”来分隔路径
c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种
常见的错误。
d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
e. export是把这三个变量导出为全局变量。
f. 大小写必须严格区分。
2. 修改.bash_profile文件
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile文件就可以了。
·用文本编辑器打开用户目录下的.bash_profile文件
·在.bash_profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·重新登录
3. 直接在shell下设置变量
不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。
只需在shell终端执行下列命令:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
参考链接:
hadoop:
http://blog.youkuaiyun.com/dai451954706/article/details/46966165
http://www.linuxidc.com/Linux/2015-08/120947.htm
jdk: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html