退出图形可视化界面:
systemctl set-default multiuser.target
删除命令:rm -rf nm-local-dir 这个是该目录下,其它目录用/
查看目录:pwd
重启:reboot
以管理员身份进入:su
根据比赛具体要求连接主机:
Linux下的vi编辑
修改主机名
hostnamectl set-hostname master
bash
hostnamectl set-hostname slave1
bash
hostnamectl set-hostname slave2
bash
编写network文件(就master使用):
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
esc退出:wq保存
下载工具(-y表示同意):三台都做
yum install -y net-tools(下载速度慢)
bash:刷新
设置host地址:
vim /etc/hosts
根据比赛具体要求按大写G跳到最后一行在按o输入
192.168.109.155 master
192.168.109.156 slave1
192.168.109.157 slave2
更改:三台机子的IP地址
分发文件
scp /etc/hosts root@slave1:/etc/
scp /etc/hosts root@slave2:/etc/
返回查看slave1、slave2是否连接成功
vim /etc/hosts
三台机子同时进行!
关闭防火墙:
systemctl stop firewalld
关闭完查看:
systemctl status firewalld
显示dead则表示关闭成功
永久关闭防火墙
systemctl disable firewalld
三台都做
11,修改时间(选到北京):
tzselect
5:asia
9:china
vim /etc/profile
根据比赛具体要求:
按大写G跳到最后一行在按o输入
TZ='Asia/Shanghai'; export TZ(tzselect 最后提示)
保存退出:
source /etc/profile
查看是否更改正确:date
下载ntp:
yum install -y ntp
【关闭master发送键输入到所有会话(在master页面按off)】
编辑ntp.conf:(只用在master下)
vi /etc/ntp.conf
Server 127.127.1.0
Fudge 127.127.1.0
:wq保存退出
(在server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
在这四句开头s前加上#将其注释掉
并在这四句下输入:按o在下一行输入
Server 127.127.1.0
Fudge 127.127.1.0 stratum 10
stratum 10 设置服务器总层级,这里是10,根据题意修改)
master分发文件
scp -r /etc/ntp.conf root@slave1:/etc/
scp -r /etc/ntp.conf root@slave2:/etc/
启动ntp
/bin/systemctl restart ntpd.service
启动ntp
systemctl restart ntpd(重启ntpd)(只用在master下)
同步时间外网(slave1,2大约5分钟):
ntpdate master
失败:
sysytemctl status ntpd
systemctl stop ntpd
(显示masterIP)
查看时间:date
设置定时任务,master节点不操作,
在slave中操作,slave1和slave2中开启点击发送键输入到所有会话
crontab -e
(e为编辑模式,l查看)
whereis ntpdate就会得到绝对路径
写入:根据比赛规则来改变
*/30 10-17 * * * /usr/sbin/ntpdate master
时间同步更改规则:*/开头必写,30为分钟(每半小时),空格再写第二个参数小时,
10点到17点,后三个参数为日 月 周,没有要求就用*表示
usr/sbin/ntpdata master}绝对路径在master下输入
whereis ntpdate就会得到绝对路径
ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz
/usr/sbin/ntpdate这一段就为我们想要的“绝对路径”再加个空格master就行
免密:
15,
设蛋免密在。55h目录下:
1)三台机子(root目录)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
(2) master端,先进入•ssh目录下:
cd .ssh
cat id_dsa.pub >> authorized_keys
回是自己:
ssh master
在退出:
exit
(3) slave1、2,先进入ssh目录下:
cd .ssh
scp master:~/.ssh/id_dsa.pub ./master_das.pub
cat master_das.pub >> authorized_keys回显自己:
ssh slavel1/2
退出:
exit
master下:
ssh-keygen
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
ssh slave2
exit
ls8
在.ssh目录下:
cat known_hosts(查看可以访问的信息)
ssh localhost
exit
cd 退出该目录
cd /opt/进入到opt文件夹下
mkdir soft 创建soft文件夹
在opt文件夹下soft,并将软件压缩包拖进去
JDK---------------------------------------------------------------
mkdir -p /usr/java
cd /usr/java/
cd /opt/soft/java/
解压:
tar -zxvf /usr/java/jdk-8u221-linux-x64.tar.gz -C/usr/java/
tar -zxvf /opt/soft/jdk-8u221-linux-x64.tar.gz -C/opt/soft/
[ls
查看 复制路径
cd 路径
pwd 复制
]
【打开三台机器的发送键输入到所有会话】
配置环境变量(此环境为三个工具的环境):
vim /etc/profile
底部:
#java
export JAVA_HOME=/usr/java/jdk1.8.0_221
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin/
环境资源生效:
source /etc/profile
【关闭master发送键输入到所有会话】
发送java:
scp -r /usr/java slave1:/usr/
scp -r /opt/soft/ slave1:/opt/soft/
scp -r /usr/java slave2:/usr/
scp -r /opt/soft/ slave2:/opt/soft/
在slave1,slave2环境资源生效:
source /etc/profile
检测java:
java -version
(出现Open JDK则成功)
zookeeper----------------------------------------------------------------
安装zookeeper:
创建目录:
mkdir /usr/zookeeper
cd /usr/zookeeper
解压:
tar -zxvf /usr/zookeeper/zookeeper-3.4.14.tar.gz -C/usr/zookeeper/
tar -zxvf /opt/soft/zookeeper-3.4.14.tar.gz -C/opt/soft/
进入目录:
cd /opt/soft/zookeeper-3.4.14/conf
【打开三台机器的发送键输入到所有会话】
{ [ls
查看 复制路径
cd 路径
pwd 复制
]
配置环境变量(此环境为三个工具的环境):
vim /etc/profile
#zookeeper
export ZOOKEEPER_HOME=/home/master/usr/zookeeper/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
到conf目录
cd conf/
ls }
cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg:
vim zoo.cfg
复制题目内容
修改???--》内容:(存储路径)
1、dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata
dataDir=/opt/soft/zookeeper/zookeeper-3.4.14/zkdata
2、配置日志文件路径
dataLogDir=/home/master/usr/zookeeper/zookeeper-3.4.14/zkdatalog
dataLogDir=/home/master/opt/soft/zookeeper/zookeeper-3.4.14/zkdatalog
3、
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
(集群内容(固定内容))
退回上一级目录:
cd ..(有空格!!!)
创建zkdata,zkdatalog:
mkdir zkdata zkdatalog
进入zkdata
cd zkdata
编辑myid为1
vi myid
发送zookeeper:
scp -r /usr/zookeeper slave1:/usr/
scp -r /opt/soft/ slave1:/opt/soft/
scp -r /usr/zookeeper slave2:/usr/
scp -r /opt/soft/ slave2:/opt/soft/
echo 1 > /usr/zookeeper/zookeeper-3.4.14/zkdata/myid
(echo表示覆盖)
在slave1中写入
cd /usr/zookeeper/zookeeper-3.4.14/zkdata
修改id
vi myid
2
echo 2 > /usr/zookeeper/zookeeper-3.4.14/zkdata/myid
在slave2中写入
cd /usr/zookeeper/zookeeper-3.4.14/zkdata
修改id
vi myid
3
echo 3 > /usr/zookeeper/zookeeper-3.4.14/zkdata/myid
三个一起:
查看是否成功
cat /usr/zookeeper/zookeeper-3.4.14/zkdata/myid
cat /opt/soft/zookeeper-3.4.14/zkdata/myid
启动zookeeper:/usr/zookeeper/zookeeper-3.4.14/bin/zkServer.sh start
查看状态:/usr/zookeeper/zookeeper-3.4.14/bin/zkServer.sh status
Master和slave2出现follower,salve1出现leader则说明配置成功
jps查看
错误:
jps查看进程
不占用端口就查看zoo.cfg
然后/zkdata/myid的/zkdata下删除除了myid外的文件
再次启动
hadoop----------------------------------------------------------------
【关闭masterOFF】
创建hadoop文件:
mkdir /usr/hadoop
cd /usr/hadoop
解压:
tar -zxvf /usr/hadoop/hadoop-2.7.7.tar.gz -C/usr/hadoop/
tar -zxvf /opt/soft/hadoop-2.7.7.tar.gz -C/usr/hadoop/
进入目录:
cd hadoop-2.7.7/
cd /usr/hadoop/hadoop-2.7.7/etc/hadoop
[ls
查看 复制路径
cd 路径
pwd 复制
]
三个都要
vim /etc/profile
#hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
配置hadoop的JAVA_HOME的环境变量
cat /etc/profile
(复制Java的第一条语句)export JAVA_HOME=/usr/java/jdk1.8.0_221
记得修改路径!
cd /usr/hadoop/hadoop-2.7.7/etc/hadoop
一、配置
vi hadoop-env.sh
写入:export JAVA_HOME=/usr/java/jdk1.8.0_221
- 配置
vi core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/src/hadoop-2.7.3/hdfs/tmp</value>
<description>A base of other temporary directories</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
三:配置
vi yarn-site.xml
写入:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
四、配置
vim hdfs-site.xml
写入:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoopData/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoopData/data</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
</property>
<property>
<name>dfs.pemissions</name>
<value>false</value>
</property>
五、配置
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
六、修改slaves
vi slaves
写入:
slave1
slave2
编辑mater:
vi master
写入:
master
分发hadoop:
scp -r /usr/hadoop/ root@slave1:/usr/
scp -r /usr/hadoop/ root@slave2:/usr/
格式化出现0才算成功:
hadoop namenode -format
一:
vim hadoop-env.sh
写入:
export java_home 下面
export JAVA_HOME=/usr/java/jdk1.8.0_221
二:
配置:
vim core-site.xml
写入:
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopData/tmp</value>
</property>
三:
vim hdfs-site.xml
写入:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoopData/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoopData/data</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
</property>
<property>
<name>dfs.pemissions</name>
<value>false</value>
</property>
三个都要
vim /etc/profile
#hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
配置hadoop的JAVA_HOME的环境变量
cat /etc/profile
(复制Java的第一条语句)export JAVA_HOME=/usr/java/jdk1.8.0_221
cd /usr/hadoop/hadoop-2.7.7/etc/hadoop
一:
vim hadoop-env.sh
写入:
export java_home 下面
export JAVA_HOME=/usr/java/jdk1.8.0_221
{第二个value为题目所给绝对地址}
hive------------------------------------------------
在master端:
创建文件:
mkdir -p /usr/hive
解压:
tar -zxvf /usr/apache-hive-2.3.4-bin.tar.gz -C/usr/hive/
cd /usr/hive
[ls
查看 复制路径
cd 路径
pwd 复制
]
进入对应目录
cd /usr/hive/apache-hive-2.3.4-bin/conf
(配置slave1,master)
vim /etc/profile
#hive
export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
cd /usr/hive/apache-hive-2.3.4-bin/conf
vim hive-env.sh.
复制入
# HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
# export HIVE_CONF_DIR=
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf
# export HIVE_AUX_JARS_PATH=
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib
(1,安装路径2,配置文件存放路径为conf3运行路径为lib)
(再打开一个终端
查看/conf下的路径
pwd
cd ..
ls
cd lib/
pwd
复制路径为运行路径)
解决版本冲突
解决安装包冲突:
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/(题目中的地址 空格$连接)
在slave1中:
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/
cp /usr/package277/mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib
slave1 中:
cd $HIVE_HOME
cd conf/
ls
vi hive-site.xml
写入:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!--数据库连接driver,即mysql驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--mysql数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--mysql数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
(1,存放路径2结点为slave2,3相当于com/mysql/jdbc/Driver)
master中:
cd /usr/hive/apache-hive-2.3.4-bin/conf
vi hive-site.xml
写入:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--使用本地服务连接hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!--连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>
(1路径2关闭false3slave1结点)
在slave1中初始化数据库:
schematool -dbType mysql -initSchema
在slave1启动hive服务:
hive --service metastore &
(service放在后端运行)
在master服务端进入hive:
hive
create database hive;
show databases;
quit;
(参数都是题目所给
1,NameNode的地址(备份数量为2)2,NameNode存储空间的路径3,Datanode的存放路径4集群权限系统校验5Datanode之间通信(true允许)
)
cat /etc/profile
(复制Java的第一条语句)
vim yarn-env.sh
写在:
User for YARN 下
四:
设置YARN的核心参数
vim yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141;</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
(master:18141 :master端口,mapreduce_shuffle为使用的方式)
五:
计算框架参数
CM默认没有需要复制
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
写入:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(在yarn上使用)
echo slave1 >slaves
echo slave2 >>slaves
检测
cat slaves
echo master >master
发送Hadoop:
scp -r /usr/hadoop root@slave1:/usr/
scp -r /usr/hadoop root@slave2:/usr/
格式化出现0才算成功:
hadoop namenode -format
启动和关闭能访问master:50070:
start-all.sh
(报错就 /usr/hadoop/hadoop-2.7.7/sbin/start-all.sh)
检查状态:
jps
安装MySQL源:slave2做,[此时共享都关闭]-----------------------------------------
(关闭开机自启)
systemctl disable mysqld
启动MySQL:
systemctl start mysqld
grep "temporary password" /var/log/mysqld.log
默认密码:
进入mysql,
mysql -u root -p
更改为弱密码(0为最低级):
set global validate_password_policy=0;
密码最小长度限制改为1:
set global validate_password_length=1;
修改密码为root:
alter user 'root'@'localhost' identified by '123456';
退出命令:
\q;
开启 mysql 中 root用户远程访问权限:
先进入mysql
mysql -uroot -p123456
创建一个可以远程连接的root用户密码为root
create user 'root'@'%' identified by 'root';
设置权限
所有用户都能登录:
grant all privileges on *.* to 'root'@'%' with grant option;
刷新:
flush privileges;
hive------------------------------------------------
在master端:
创建文件:
mkdir -p /usr/hive
解压:
tar -zxvf /usr/package277/apache-hive-2.3.4-bin.tar.gz -C/usr/hive/
cd /usr/hive
[ls
查看 复制路径
cd 路径
pwd 复制
]
进入对应目录
cd /usr/hive/apache-hive-2.3.4-bin/conf
(配置slave1,master)
vim /etc/profile
#hive
export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
cd /usr/hive/apache-hive-2.3.4-bin/conf
vim hive-env.sh.
复制入
# HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
# export HIVE_CONF_DIR=
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf
# export HIVE_AUX_JARS_PATH=
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib
(1,安装路径2,配置文件存放路径为conf3运行路径为lib)
(再打开一个终端
查看/conf下的路径
pwd
cd ..
ls
cd lib/
pwd
复制路径为运行路径)
解决版本冲突
解决安装包冲突:
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/(题目中的地址 空格$连接)
在slave1中:
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/
cp /usr/package277/mysql-connector-java-5.1.47-bin.jar $HIVE_HOME/lib
slave1 中:
cd $HIVE_HOME
cd conf/
ls
vi hive-site.xml
写入:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!--数据库连接driver,即mysql驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--mysql数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--mysql数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
(1,存放路径2结点为slave2,3相当于com/mysql/jdbc/Driver)
master中:
cd /usr/hive/apache-hive-2.3.4-bin/conf
vi hive-site.xml
写入:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--使用本地服务连接hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!--连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>
(1路径2关闭false3slave1结点)
在slave1中初始化数据库:
schematool -dbType mysql -initSchema
在slave1启动hive服务:
hive --service metastore &
(service放在后端运行)
在master服务端进入hive:
hive
create database hive;
show databases;
quit;
spark---------------------------------------------------
关闭共享
关掉hadoop安装:
/usr/hadoop/hadoop-2.7.7/sbin/stop-all.sh
创建:
mkdir /usr/scala/
cd /usr/scala/
tar -zxvf /usr/package277/scala-2.10.6.tgz -C/usr/scala/
cd scala-2.10.6/
[ls
查看 复制路径
cd 路径
pwd 复制
]
vim /etc/profile
#scala
export SCALA_HOME=/home/master/usr/scala/scala-2.11.12
export CLASSPATH=$SCALA_HOME/lib
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile
检查:
scala -version
scp -r /usr/scala root@slave1:/usr/
scp -r /usr/scala root@slave2:/usr/
创建文件:
mkdir /usr/spark/
cd /usr/spark/
解压 :
tar -zxvf /usr/package277/spark-2.4.3-bin-hadoop2.7.tgz -C/usr/spark/
进入目录:
cd /usr/spark/spark-2.4.3-bin-hadoop2.7/conf/
复制出spark-env.sh:
cp spark-env.sh.template spark-env.sh
[ls
查看 复制路径
cd 路径
pwd 复制
]
vim etc/profile
#spark
export SPARK_HOME=/usr/spark/spark-2.4.0-bin-hadoop2.7
export PATH=$SPARK_HOME/bin
source /etc/profile
vim spark-env.sh
export SPARK_MASTER_IP=master
export JAVA_HOME=JAVA_HOME=/usr/java
export SPARK_WORKER_MEMORY=8g
export HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.7.7/etc/hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export SCALA_HOME=/usr/scala/scala-2.10.6
vim slaves
写入:
删除localhost
slave1
slave2
发送spark
scp -r /usr/spark slave1:/usr/spark
scp -r /usr/spark slave2:/usr/spark
(启动zookeeper:
/usr/zookeeper/zookeeper-3.4.14/bin/zkServer.sh start
根目录下启动hadoop
/usr/hadoop/hadoop-2.7.7/sbin/start-all.sh)
jps是查看进程jps
启动spark集群
/usr/spark/spark-2.4.3-bin-hadoop2.7/sbin/start-all.sh
访问页面:
192.168.187.128:8080
接下来我们开启我们的 spark-shell 以及 pyspark 进入到 spark 的交互模式:
首先 spark-shell 此时进入的是 python 环境下的 spark 交互模式
根目录下
spark-shell
简单测试一下输入:
print("Hello,world!")
退出:
:quit
连接slave3
ssh root@39.106.156.38
修改主机名
hostnamectl set-hostname slave3
(四个主机都改)
vim /etc/hosts
vim /etc/profile
(从master中复制需要的配置)
source /etc/profile
定时任务:
crontab -e
写入:
*/30 * * * * /usr/sbin/ntpdata master
salve3设置免密:
ssh-copy-id slave3
安装JDK到/usr/java下
scp -r /usr/java slave3:/usr/
HADOOP
scp -r /usr/hadoop slave3:/usr/
master端(hadoop文件下)
vim slaves
写入
slave3
在slave3端(启动datanode,nodemanager)
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
master中刷新
hdfs dfsadmin -refreshNodes
master
vim hdfs-site.xml
写入:
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes</value>
</property>
将slave3添加进excludes
echo slave3 > /usr/hadoop/hadoop-2.7.7/etc/hadoop/excludes
刷新
hdfs dfsadmin -refreshNodes
slave3关闭Hadoop(master中)
hadoop-ddemon.sh stop datenode
yarn-daemon.sh stop nodemanager
连接Hadoop主机
ssh ??
下面任务栏MapReduce locations
配置参数
C:\Window\System32\divers\etc\hosts
39.106.143.10 hadoop000
cat /etc/hosts
导入eclipse-plugin-2.7.5.jar进eclipse
新建 MapReduce Driver
window -->preferences-->MapReduce(选择Hadoop路径)
window -->perspective -->other-->MapReduce
window -->show view-->other-->MapReduce locations
locationname:123(取消勾选)
Host:公共IP Host:公共IP
Port:不改变 Port:9000
User:root
(报错不管)
虚拟机
jps
hadoop namenode -format
开启Hadoop集群
start-all.sh
jps
hdfs dfs -mkdir /test
创建成功
新建 -->project-->MapReduce project
步骤
一(得到评分矩阵)
map:获取每一行数据 用户ID做key movield +‘:’+rate做value
reduce:遍历结果集 拼接
二组合列表进行计数
三评分矩阵与对同矩阵互换
package com.hongya.peixun
import org.apache.hadoop.conf.Configuration;
public class ScoringMatrix{
public static class ScoringMatrixMap extends Happer<LongWritable,Text,IntWritable,Text>{
IntWritable k=new IntWritable();
Text v=new Text();
protected void nap(LongWritable key, Text value, Context context) throws IDException,InterruptedException{
String line = value.toString();
String[] split = line.split(",");
Integer userID = Integer.volueOf(split[0]);//用Pid
String moveId =split[1];//电影id
Double reat = Double.value0f(split[2])://评分
k.set(userID);
v.set(moveId+"+"+reat);
context.write(k,v);
}
public static class ScoringMatrixReduce extends Reducer<IntWritable,Text,IntWritable,Text>{
Text v=new Text();
protected void reduce(IntWritable key,Iterable<Text> values, Context context) throws IDException, InterruptedException{
StringBuffer sb - new StringBuffer();
for (Text value : values);
sb.append(","+value);
}
v.set(sb.toString().replaceFirst(",",""));
context.write(key,v);
}
}
public static void main(String[] args) throws IOException,ClassNotFoundException,InterruptedException{
Configuration conf = new Configuration();
conf.set("dfs.client.use.datanode.hostname","true");
conf.set("fs.defaultFS" "hdfs://hadoopa00:9000");
Job job = Job.getInstance(conf);
BasicConfigurator.configure();//自动快速地使用缺省Logdj环境,
job.setMapperCless(ScoringMatrixMap.class);
job.setReducerClass(ScoringMatrixReduce.class);
//设置map阶段的输出类型
job.setMapOutputKeyClass(IntWritable.class);
job.setMapOutputvalueClass(Text.class);
//最终结果的数据类型
job.setoutputKeyClass(IntWritable.class);
job.setOutputValueClass(Text.class);
//job.setNuaReduceTasks(1);
//启动2个reduce任务
//待处理数据的路色
FileInputFormat.setInputPaths(job, new Path("/input/data.csv"));
FileDutputFormat.set0utputPath(job, new Path("/root/movie/output1/"));
boolean res = job.waitForCompletion(true);
System.exit(res?0:1);
}
}