实验前准备
服务器地址:云服务器的公网地址
hadoop用户登录:
su - hadoop #切换当前用户为用户hadoop
我自己设置的密码:hadoop
检验一下java是否设置正确
echo $JAVA_HOME # 检验变量值
java -version
$JAVA_HOME/bin/java -version # 与直接执行 java -version 一样
修改HOSTS
输入以下命令,进入hosts文件编辑界面。hosts文件存在于/etc/hosts
sudo vi /etc/hosts
删除以下内容
127.0.1.1 localhost.localdomain VM-0-8-ubuntu
增加以一上内容,这样就可以直接使用hadoop01来访问这台主机了。注意10.206.0.2为你主机的内网IP地址、
10.206.0.8 hadoop01
然后依次输入 Esc, :wq!,回车
Hadoop配置
下载:
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
解压
sudo tar -zxvf hadoop-3.3.5.tar.gz -C /usr/local/
cd /usr/local
sudo mv hadoop-3.3.5 hadoop #重命名为hadoop
sudo chown -R hadoop ./hadoop #修改文件权限
配置Hadoop环境
vi ~/.bashrc
给hadoop配置环境变量,将下面代码添加到.bashrc文件:
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
同样,执行source ~/.bashrc使设置生效,并查看hadoop是否安装成功
source ~/.bashrc
修改配置文件
在 /usr/local/hadoop/etc/hadoop/hadoop-env.sh 文件中,增加以下内容。
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
如是使用Putty远程连接到服务器,可以使用vi直接修改,也可以用FileZilla软件将待修改的文件下载到本地修改后,再上传到服务器
验证单机安装
进入 /usr/local/hadoop/ 目录,运行以下命令后,查看运行结果,并分析结果。
cd /usr/local/hadoop/
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep input output 'dfs[a-z.]+'
cat output/*
主要所有的3.3.5要一致,如果自己的使3.3.4,那就要注意替换
运行结果:(我也不知道对不对
修改 /usr/local/hadoop/etc/hadoop/hadoop-env.sh
vi /usr/local/hadoop/etc/hadoop/yarn-env.sh
yarn-env.sh中,添加如下代码:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
修改 /usr/local/hadoop/etc/hadoop/core-site.xml
vi /usr/local/hadoop/etc/hadoop/core-site.xml
在core-site.xml文件的中增加以下内容。
<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop01:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/temp</value></property>
</configuration>
修改 /usr/local/hadoop/etc/hadoop/hdfs-site.xml
vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration><property><name>dfs.namenode.secondary.http-address</name><value>hadoop01:9001</value></property><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/dfs/data</value></property><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property><property><name>dfs.permissions</name><value>false</value></property><property><name>dfs.web.ugi</name><value>supergroup</value></property><property><name>dfs.datanode.use.datanode.hostname</name><value>true</value></property>
</configuration>
vi /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property>
</configuration>
vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
</configuration>
vi /usr/local/hadoop/etc/hadoop/workers
works中,保留以下内容
hadoop01
设置无密码登录
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
我的结果:(对吗
启动hadoop
云端的话每一次关闭云服务器后再运行,都要重新运行一次这个:
/usr/local/hadoop/bin/hdfs namenode -format #格式化HDFS
/usr/local/hadoop/sbin/start-all.sh #启动
访问http://ip:9870,看是否可以访问。
问了chatgpt:
我的结果:(是这样吗
下载anaconda
输入以下命令
cd ~/
wget https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh
第二句的执行我这里有问题(error 403)用下面的替换好像ok
wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh
bash ~/Anaconda3-2022.10-Linux-x86_64.sh.1
回车后查看许可证,按 q 退出许可证,然后输入 yes 表示同意
确认安装的路径,一般直接回车安装在默认的 /home/hadoop/anaconda3
启动环境变量
source ~/.bashrc
创建虚拟环境
conda create -n hadoop python=3.9
进入虚拟环境
conda activate hadoop
后面的一切都要在(hadoop)下进行!!!!!!!!!!!!!!!!!!!
exit()退出python环境
修改Anaconda 镜像
vi ~/.condarc
在新文件中添加以下内容
channels:- defaults
show_channel_urls: true
default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
添加后,在命令窗口运行
conda clean -i
添加 python 模块
添加HDFS访问模块
我们使用PyArrow来访问HDFS文件。
用于Apache Arrow的Python库。这个库为Arrow c++库提供的功能提供了Python API,以及用于与panda、NumPy和Python生态系统中的其他软件进行箭头集成和互操作性的工具。Apache Arrow是一个用于内存分析的开发平台。它包含一组技术,使大数据系统能够快速处理和移动数据。
输入以下命令安装
conda activate hadoop
conda install -c conda-forge pyarrow
添加MapReduce模块mrjob
mrjob是用来写能在hadoop运行的python程序的最简便方法。其最突出的特点就是在mrjob的帮助下,无需安装hadoop或部署任何集群,我们可以在本地机器上运行代码(进行测试)。同时,mrjob可以轻松运行于Amazon Elastic MapReduce。 为了达到简便实用的目的,一些功能被mrjob省去了。如果追求更多的功能,可以尝试Dumbo,Pydoop等package。
conda activate hadoop
conda install -c conda-forge mrjob